版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Chapter 12A display model,Bjarne Stroustrup ,Abstract,This lecture presents a display model (the output part of a GUI), giving examples of use and fundamental notions such as screen coordinates, lines, and color. Some examples of shapes are Lines, Polygons, Axis, and Text.,2,Stroustrup/Programming,O
2、verview,Why graphics? A graphics model Examples,3,Stroustrup/Programming,Why bother with graphics and GUI?,Its very common If you write conventional PC applications, youll have to do it Its useful Instant feedback Graphing functions Displaying results It can illustrate some generally useful concepts
3、 and techniques,4,Stroustrup/Programming,Why bother with graphics and GUI?,It can only be done well using some pretty neat language features Lots of good (small) code examples It can be non-trivial to “get” the key concepts So its worth teaching If we dont show how its done, you might think it was “
4、magic” Graphics is fun!,5,Stroustrup/Programming,Why Graphics/GUI?,WYSIWYG What you see (in your code) is what you get (on your screen) direct correspondence between concepts, code, and output,6,Stroustrup/Programming,Display model,Objects (such as graphs) are “attached to” a window. The “display en
5、gine” invokes display commands (such as “draw line from x to y”) for the objects in a window Objects such as Square contain vectors of lines, text, etc. for the window to draw,7,Shape,Square,“window”,Display Engine,attach(),attach(),draw(),Stroustrup/Programming,Display model,An example illustrating
6、 the display model int main() using namespace Graph_lib;/ use our graphics interface library Point tl(100,200);/ a point (obviously) Simple_window win(tl,600,400,Canvas); / make a simple window Polygon poly;/ make a shape (a polygon, obviously) poly.add(Point(300,200);/ add three points poly.add(Poi
7、nt(350,100); poly.add(Point(400,200); poly.set_color(Color:red); / make the polygon red (obviously) win.attach(poly);/ connect poly to the window win.wait_for_button();/ give control to the display engine ,8,Stroustrup/Programming,The resulting screen,9,Stroustrup/Programming,Graphics/GUI libraries,
8、Youll be using a few interface classes we wrote Interfacing to a popular GUI toolkit GUI = Graphical User Interface FLTK: / Fast Light Tool Kit Installation, etc. see Appendix D and ask instructor/friend FLTK Our GUI and graphics classes Project settings This model is far simpler than co
9、mmon toolkit interfaces The FLTK (very terse) documentation is 370 pages Our interface library is 20 classes and 500 lines of code You can write a lot of code with these classes And what you can build on them,10,Stroustrup/Programming,Graphics/GUI libraries (cont.),The code is portable Windows, Unix
10、, Mac, etc. This model extends to most common graphics and GUI uses The general ideas can be used with any popular GUI toolkit Once you understand the graphics classes you can easily learn any GUI/graphics library Well, relatively easily these libraries are huge,11,Stroustrup/Programming,Graphics/GU
11、I libraries,Often called “a layered architecture”,12,Stroustrup/Programming,Coordinates,Oddly, y-coordinates “grow downwards” / right, down Coordinates identify pixels in the window on the screen You can re-size a window (changing x_max() and y_max(),13,0,0,0,100,200,0,50,50,200,100,Stroustrup/Progr
12、amming,Interface classes,An arrow means “is a kind of” Color, Line_style, and Point are “utility classes” used by the other classes Window is our interface to the GUI library (which is our interface to the screen),14,Window,Simple_window,Shape,Lines,Polygon,Rectangle,Text,Point,Color,Line_style,Line
13、,Stroustrup/Programming,Interface classes,Current Color, Line_style, Font, Point, Window, Simple_window Shape, Text, Polygon, Line, Lines, Rectangle, Axis Easy to add (for some definition of “easy”) Grid, Block_chart, Pie_chart, etc. Later, GUI Button, In_box, Out_box, ,15,Stroustrup/Programming,Dem
14、o code 1,/ Getting access to the graphics system (dont forget to install): #include “Simple_window.h / stuff to deal with your systems windows #include Graph.h / graphical shapes using namespace Graph_lib;/ make names available / in main(): Simple_window win(Point(100,100),600,400,Canvas); / screen
15、coordinate (100,100) top left of window / window size(600*400) / title: Canvas win.wait_for_button();/ Display!,16,Stroustrup/Programming,A “blank canvas”,17,Stroustrup/Programming,Demo code 2,Axis xa(Axis:x, Point(20,300), 280, 10, x axis); / make an Axis / an axis is a kind of Shape / Axis:x means
16、 horizontal / starting at (20,300) / 280 pixels long / 10 “notches” / text “x axis win.set_label(Canvas #2); win.attach(xa);/ attach axis xa to the window win.wait_for_button();,18,Stroustrup/Programming,Add an X-axis,19,Stroustrup/Programming,Demo code 3,win.set_label(Canvas #3); Axis ya(Axis:y, Po
17、int(20,300), 280, 10, y axis); ya.set_color(Color:cyan);/ choose a color for the axis ya.label.set_color(Color:dark_red);/ choose a color for the text win.attach(ya); win.wait_for_button();,20,Stroustrup/Programming,Add a Y-axis (colored),21,Yes, its ugly, but this is a programming course, not a gra
18、phics design course,Stroustrup/Programming,Demo code 4,win.set_label(Canvas #4); Function sine(sin,0,100,Point(20,150),1000,50,50); / sine curve / plot sin() in the range 0:100) / with (0,0) at (20,150) / using 1000 points / scale x values *50, scale y values *50 win.attach(sine); win.wait_for_butto
19、n();,22,Stroustrup/Programming,Add a sine curve,23,Stroustrup/Programming,Demo code 5,win.set_label(Canvas #5); sine.set_color(Color:blue);/ I changed my mind about sines color Polygon poly;/ a polygon, a Polygon is a kind of Shape poly.add(Point(300,200);/ three points makes a triangle poly.add(Poi
20、nt(350,100); poly.add(Point(400,200); poly.set_color(Color:red);/ change the color poly.set_style(Line_style:dash);/ change the line style win.attach(poly); win.wait_for_button();,24,Stroustrup/Programming,Add a triangle (and color the curve),25,Stroustrup/Programming,Demo code 6,win.set_label(Canva
21、s #6); Rectangle r(Point(200,200), 100, 50); win.attach(r); win.wait_for_button();,26,Stroustrup/Programming,Add a rectangle,27,Stroustrup/Programming,Demo code 6.1,Add a shape that looks like a rectangle Closed_polyline poly_rect; poly_rect.add(Point(100,50); poly_rect.add(Point(200,50); poly_rect.
22、add(Point(200,100); poly_rect.add(Point(100,100); win.set_label(Canvas #6.1);,28,Stroustrup/Programming,Add a shape that looks like a rectangle,29,But is it a rectangle?,Stroustrup/Programming,Demo code 6.2,We can add a point poly_rect.add(Point(50,75);/ now poly_rect has 5 points win.set_label(Canv
23、as #6.2); “looking like” is not the same as “is”,30,Stroustrup/Programming,Obviously a polygon,31,Stroustrup/Programming,Add fill,r.set_fill_color(Color:yellow);/ color the inside of the rectangle poly.set_style(Line_style(Line_style:dash,4); / make the triangle fat poly_rect.set_fill_color(Color:gr
24、een); poly_rect.set_style(Line_style(Line_style:dash,2); win.set_label(Canvas #7);,32,Stroustrup/Programming,Add fill,33,Stroustrup/Programming,Demo Code 8,Text t(Point(100,100),Hello, graphical world!); / add text win.set_label(Canvas #8);,34,Stroustrup/Programming,Add text,35,Stroustrup/Programmin
25、g,Demo Code 9,Modify text font and size t.set_font(Font:times_bold); t.set_font_size(20);,36,Stroustrup/Programming,Text font and size,37,Stroustrup/Programming,Add an image,Image ii(Point(100,50),image.jpg);/ open an image file win.attach(ii); win.set_label(Canvas #10);,38,Stroustrup/Programming,Ad
26、d an image,39,Stroustrup/Programming,Oops!,The image obscures the other shapes Move it a bit out of the way ii.move(100,200); win.set_label(Canvas #11); win.wait_for_button();,40,Stroustrup/Programming,Move the image,41,Note how the parts of a shape that dont fit in the window is “clipped” away,Stroustrup/Programming,Demo Code 12,Circle c(Point(100,200),50); Ellipse e(Point(100,200), 75,25); e.set_color(Color:dark_red); Mark m(Point(100,200),x); ostringstream
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 3836.20-2026爆炸性环境第20部分:具有隔离部件或组合保护等级的设备
- T/ZGZS 0311-2023无废校园创建指标体系评价规范
- T/HNNMIA 56-2023银铜带
- T/CIQA 90-2024跨境电子商务运营职业能力培养与评价规范
- T/CAQI 436-2025白酒企业零碳工厂评价规范
- T/CSCB 0018-2024细胞中ATP含量的测定
- 党员干部理想信念教育培训
- 2025~2026学年广东省惠州市惠阳区北师大版六年级上册期中数学试卷【附答案】
- 2025-2026学年江西省广丰县初中政治九年级期末上册模考历年考试题(附答案)
- PHP函数面试题及详细答案(企业真实面试专用)
- 2026年山西航空产业集团有限公司人员招聘笔试参考试题及详细答案解析
- 2026中国辅助生殖技术服务渗透率提升路径与区域市场差异调查报告
- 2026中国工业互联网安全威胁态势与防护体系建设研究报告
- 《人形机器人数据训练场建设规范》
- 2026年中级注册安全工程师《安全生产管理》模拟考试题(含答案解析)
- 2026新闻记者职业资格真题及答案
- 2026发展对象考试测试题库(附参考答案)
- 2026年广州市中考语文试卷(含答案及解析)
- 2026低压电工证考试题库及模拟考试答案(2026修订版)完整版
- 2026年智能矿山无人工作面技术知识考察试题及答案
- 冶金行业班组安全管理制度培训
评论
0/150
提交评论