版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 30206.3-2026航空航天流体系统词汇第3部分:温度相关的通用术语和定义
- 2026电商店铺增长规划:从定位到复购的全链路实操指南
- 2026年校园咖啡店未来发展趋势
- 2026年企业背景调查实施方法与技巧
- 2026年危险化学品泄漏事故应急救援预案
- 2026年溶出度方法验证方案与报告
- 2025湖南省长沙市中考英语真题(解析版)
- 2026年新成立广告公司客户开发与创意提案流程
- 2026年企业思想政治工作实务指南
- 2026年退役军人医疗优抚数字化服务平台建设
- 2025年凉山新华书店考试真题及答案
- 福建省厦门市2024-2025学年高二下学期期末质量检测数学试题(含部分答案)
- 2025年小学部分国防教育知识竞赛答案
- 电网技术改造及检修工程定额和费用计算规定2020 年版答疑汇编2022
- T/CNFAGS 16-2024绿色甲醇分级标准(试行)
- 职业技术学院大数据专业人才培养调研报告
- 水利工程伦理案例分析及启示
- 幼儿园6S管理实施成果
- 康复医学科临床诊疗指南
- 食品安全十分钟队会
- 青少年软件编程(图形化)等级考试试卷(三级)附有答案
评论
0/150
提交评论