窗口、视口、屏幕显示详解
C语言图形编程(一、字符屏幕)
gettext(1,1,10,10,buf);
puttext(16,16,30,30,buf);
9. movetext() 移动文字函数
功能: 函数movetext()将屏幕上一个矩形区域的文字移到另一个区域上。
用法: 该函数调用方式为 int movetext(int left,int top,int right,int bottom,int newleft,int newtop);
功能:函数clrscr()清除整个当前字符窗口,并且把光标定位于左上角(1,1)处。
用法:此函数调用方式为 void clrscr(void);
说明:括号中void 表示无参数。
该函数相应的头文件为conio.h
返回值:无
例:使用这个函数的例子见4.clreol()函数的实例中。
clrscr();
window(6,8,38,12);
border(6,8,38,12);
gotoxy(2,2);
printf("window 1");
window(8,16,40,24);
border(8,16,40,24);
gotoxy(3,2);
此函数相应的头文件是conio.h
返回值: 如果有一个以上坐标无效,那么函数返回值为0,否则返回1。
for(i=2;i<=endy-starty;i++){
gotoxy(1,i);
putch('1');
gotoxy(endx-startx+1,i);
putch('1');
计算机图形学_ 二维图形变换_55 窗口视区变换_
需要根据用户所定义的参数,找到窗口和视区之间的坐标 对应关系
y
世界坐标系
y
屏幕坐标系
wyt
vyt
窗口
视区
P(x,y)
wyb
P’(sx,sy)
vyb
0
wxl
wxr
x0
vxl
vxr x
窗口到视区的映射是基于一个等式,即对每一个在世界坐标 下的点(x,y),产生屏幕坐标系中的一个点(sx,sy)
sx vl vr vl
x wl wr wl
sx A* x C sy B * y D
sx x wl (vr vl) vl wr wl
sx vr vl x (vl vr vl wl)
wr wl
wr wl
A看做放大x的部分,而C看做常数
A vr vl wr wl
窗口、视区及变换
一、窗口和视区
世界坐标系中要显示的区射到显示器(设备)上的区域称为视区
窗口定义显示什么;视区定义在何处显示
y
wyt
wyb 0
窗口
wxl
wxr
世界坐标系
y
vyt 视区
vyb
x
0 vxl
vxr x
设备坐标系
世界坐标系中的一个窗口可以对应于多个视区
C vl A*wl
同理,y方向上保持比例性质满足:
sy vb y wb
vt vb
wt wb
sx A* x C sy B * y D
B vt vb wt wb
D vb B*wb
这个映射可用于任意点(x,y),不管它是否 在窗口之中。在窗口中的点映射到视口中的 点,在窗口外的点映射到视口外的点
一般图形的显示流程
几种坐标系
1. 世界坐标系(world coordinate) :一个图形场景往往由多 个对象组成,为了描述它们之间的空间关系,需要把它们 置于一个统一的坐标系中,该坐标系称为世界坐标系。
2. 模型坐标系(modeling coordinate)又称局部坐标系 (local coordinate):当构造单个对象的数字模型时,为 了方便,可以将其置于一个特定的坐标系下,即模型坐标 系或局部坐标系.
说明
变换:为使显示的对象在合适的位置,以合适的 大小和方向显示出来,需要对该对象在世界坐 标系中作平移、放缩和旋转等变换。
投影:三维空间中的对象要在二维的屏幕或图纸 上显示出来,就必须通过投影。投影的方法有 两种,平行投影和透视。
窗口:有时为了突出图形的某一部分,可定义一 个窗口,只显示窗口内的图形。
视区:在屏幕或绘图纸上定义一个矩形,称为 视区,也称为视口,窗口内的景物在视区中显示。
近平面 视点
远平面 Z
投影平 V′ U′ 窗口 面 X′ Y′
Y
屏 视口 幕
视见体.窗口和视口
三维图形的显示流程图
计算机图形学
3. 设备坐标系(device coordinate):图形输出时,应在输 出设备上建立一个坐标系,这个坐标系称为设备坐标系。 设备坐标系依据设备种类有不同的形式,如二维的屏幕坐 标系,描述机械手运动轨迹的三维坐标系。
4. 标准化设备坐标系(normalized device coordinate):有 些图形系统,对设备坐标系进行了规范化,将坐标范围限 定在区间{x,y,z | 0≤x≤1, 0≤y≤1, 0≤z≤1}内,称为标准化设 备坐标系.
什么是视口?为什么会有视口?
视口为什么会出现?屏幕多种多样,由于不同分辨率、屏幕宽高比都有可能不同,同一张图片在不同中显示的位置和小,在视觉上存在差异,们需要对不同的屏幕进行适配,使相同的程序逻辑在不同的屏幕上显示的视觉一致,为此出现了视口的概念。
如何理解视口?视口(Viewport)前端发中一个非常重要的概念,最早苹果推出iPhone时发明的,为的让iPhone的小屏幕尽可能完整显示整个网页。
不管网页原始的分辨率尺寸多,都能将其缩小显示在浏览器上,这样保证网页在上看起来更像在桌面浏览器中的样子。
在苹果引人视口的概念后,所有的发者也都认同了这个法。
为了方便读者理解视口到底什么,举例进行说明。
在网页过程中,有时人们会使用百分比来声明宽度,代码如下:<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>demo</title></head><body><header>header</header><divstyle="width:50%"></div></body></html>在上述代码中,divbody的子元素,设置style="width:50%"就表示该div占body宽度的50%,而body没有显示声明宽度,因此body占用了父包含块(视口)html元素宽度的。
同样,html也没显示声明宽度,因此html元素也占父包含块的。
视口在CSS标准文档中称为初始包含块,这个初始包含块所有CSS百分比宽度推算的根源。
在PC桌面上,如果不对html和body元素设置margin和paing,那么html和body元素都与浏览器窗口的宽度一致。
因此,这时,上述代码中的div元素占浏览器宽度的50%。
窗口与视区
yw 1T xw
yw
1
0
S2
0
S1Wxl Vxl S2Wyb Vyb 1
即:
xv S1(xw Wxl) Vxl
yv
S
2(
yw
Wyb)
Vyb
视区坐标到物理设备坐标的变换
大多数计算机显示器的屏幕坐标系与前述所得视区 的笛卡儿直角坐标系不同,显示器的坐标原点在左 上角,X轴水平向右,Y轴垂直向下,所以需要将 视区坐标转换为物理设备坐标。
第三章 窗口与视区
第一节 窗口与视区的概念
坐标系
世界坐标系(用户坐标系)
– 定义物体或图形的坐标系,称为世界坐标系( World Coordinate System,简称WCS),为右 手直角坐标系,又称物坐标系或用户坐标系。
– 理论上,世界坐标系是无限大且连续的,定义域 为整个实数域,但在实际应用中,坐标值的绝对 值受计算机浮点数表示范围的限制。
代入窗口视区变换:
xs x0 S1(xw Wxl) Vxl
ys
y0
S2( yw Wyb)
Vyb
思考题
推导从窗口到视区的变换矩阵。
坐标系
设备坐标系
– 图形输出设备(如显示器、绘图仪)自身都有一 个坐标系,称为设备坐标系(Device Coordinate System,简称DCS)或物理坐标系。
– 设备坐标系是一个二维平面坐标系,它的度量单 位为步长(绘图仪)或像素(显示器),因此它 的定义域是整数域且有界,如显示器的分辨率就 是其DCS的界限范围。
1 0 0 S1 0 0 1 0 0
T
Twt
Ts
Tvt
0
1
0
0
S2
CG07
}
16
7.4 裁剪
流程
二维显示流程
扫描转换+裁剪
算法简单(判断像素是否落在视区中)
裁剪+扫描转换
最常用,节约计算时间(先对参数表示的图形裁剪)
17
7.4 裁剪
裁剪(clip)
判断图形元素是否落在裁剪窗口之内并找出其位于内部 的部分 图元关于窗口内外关系的判别 图元与窗口的求交 矩形裁剪窗口:
问题:对于任何多边形裁剪窗口,如何判别?
20
7.5.2 直接求交算法
端点与窗口位臵关系
都在窗口内(完全可见) 1个在窗口内,另一个在外
(有1个交点)
P6 P5 P7 P9 P1 P2 P3
2个都不在窗口内
可能相交 可能不相交
P10
P8
P4
21
7.5.2 直接求交算法
计算交点方法
7.3 OpenGL二维观察函数
实例7-1(续)
void triangle (wcPt2D *verts) { GLint k; glBegin (GL_TRIANGLES); for (k = 0; k < 3; k++) glVertex2f (verts [k].x, verts [k].y); glEnd ( ); } void viewport(float x0,float y0, float x1, float y1) { glBegin(GL_LINE_LOOP); glVertex2i(x0,y0);glVertex2i(x1,y0); glVertex2i(x1,y1);glVertex2i(x0,y1); glEnd(); } 13
CAD船舶绘图第5讲
2. 绘图显示控制
(1)缩放图形 命令:ZOOM 菜单:视图/缩放 工具栏:视图/工具栏/缩放 功能:可以放大和缩小屏幕视图,但不影 响对象的实际大小。
2. 绘图显示控制
(2)平移 命令:PAN 菜单:视图/平移 工具栏:小手图形 功能:移动图形,使需要观察的部分显示 在视口中。
命名和裁剪视口
(3)命名视口:视口对话框中的命名视 口功能是存储所选定视口,方法是,在新 建视口的“新建名称中给个名字,然后确 定,当前视口被存储。 命名视口的显示只是模型空间的视口。 (4)裁减视口,是在布局空间操作,将 视口的边线进行修剪,方法是选定视口边 线,然后画一个需要的多边形,即改变了 视口的形状。
CAD绘图第5讲绘图显示Biblioteka 制1. 视图窗口的设置(视口)
(1)创建视图窗口 命令:VPORTS 菜单方式:视图/视口/新建视口 工具栏: 视图/工具栏/视口 用途:可以创建2维和3维不同窗口视图, 尤其3维视图非常方便
模型空间和布局空间视口
(2)模型空间视口 我们通常是在模型空间绘图,视口是一个, 但在3维图中通常使用4个视口。现在船舶 绘图的3维软件都是4个视口,我们现在学 的平面绘图,一般用一个视口。 布局空间(图纸空间) 布局空间可以创建多边形和对象窗口 布局效果和打印预览效果相似,用来打印 设置
2. 绘图显示控制
(3)鸟瞰图 命令:DSVIEWER 菜单:视图/鸟瞰视图 功能:一个图形同时能打开两个窗口,在 鸟瞰窗口利用缩放和平移命令非常方便观 察。
2. 绘图显示控制
什么是视口?视口主要设置有哪些?
什么是视口?视口主要设置有哪些?浩辰CAD的模型空间是一个虚拟的三维空间,我们可以在模型空间绘制二维或三维的图形,而布局的图纸空间就是一张虚拟的纸张,要将模型空间的图形排在这张纸上,就需要在图形空间上开一个窗口来显示模型空间的图形,这个窗口就是视口。
视口的大小、形状可以随意使用。
在视口里面对模型空间的图形进行缩放(ZOOM)、平移(PAN)、改变坐标系(UCS)等的操作,可以理解为拿着这张开有窗口的"纸"放在眼前,然后离模型空间的对象远或者近(等效ZOOM)、左右移动(等效PAN)、旋转(等效UCS)等操作,更形象的说,就是这些操作是针对图纸空间这张"纸"的,这就可以理解为什么在图纸空间进行若干操作,但是对模型空间没有影响的原因。
如果视口已经设置好,不再希望改变视口中显示图形的大小,就需要"锁定视口"。
如果一张图要按1:100比例打印,在模型空间通常用1:1绘图,进入布局空间后,可以创建一个比例为1:100的视口,插入标准图框后,按1:1打印输出。
在布局空间中可以创建多个视口,每个视口显示内容、比例、形状都可以不同,如下图所示。
除此以外,利用视口还可以显示三维模型的不同视图以及消隐和着色的不同效果,如下图所示。
双击视口范围以内或用MS命令从图纸空间进入模型空间,使用缩放平移等手段使你需要打印的那部分显示在图框范围内(通常我们在绘图时就要考虑最终的出图比例,从而合理设置图中文字或设备图块的大小,否则最后可能出现打印出来文字过大或过小的情况)。
双击视口范围以外或用PS命令从模型空间退回图纸空间(也可以单击底部状态栏的模型/图纸切按钮)。
先选择视口,如果直接选不中的话,使用框选(从左往右框),如果视口和图框的内框线重合的话,可能会选中框线。
如果只选中了视口,属性框将如下图所示,如果框选了视口及其他对象,请在属性框顶部的下拉框中选中"视口",显示视口属性。
浅谈移动端中的视口(viewport)
浅谈移动端中的视⼝(viewport)在 PC 端,视⼝指的是浏览器的可视区域,其宽度和浏览器窗⼝的宽度保持⼀致。
在 CSS 标准⽂档中,视⼝也被称为初始包含块,它是所有 CSS 百分⽐宽度推算的根源,给 CSS 布局限制了⼀个最⼤宽度。
⽽移动端则较为复杂,它涉及到三个视⼝:布局视⼝(Layout Viewport)、视觉视⼝(Visual Viewport)和理想视⼝(Ideal Viewport)。
本⽂主要讨论移动端中的视⼝。
1. 基本概念1.1 两种像素像素是计算机屏幕中显⽰特定颜⾊的最⼩区域。
屏幕中的像素越多,同⼀范围内能看到的内容就越多。
或者说,当设备尺⼨相同时,像素越密集,画⾯就越精细。
那么,当我们在 CSS 中为⼀个元素设置属性width: 250px;时,会发⽣什么?这个元素的宽度究竟是多少像素呢?事实上,这⾥已经涉及了两种不同的像素:物理像素和 CSS 像素。
物理像素(设备像素,device pixels)指的是设备屏幕的物理像素,任何设备的物理像素数量都是固定的。
CSS 像素(CSS pixels)是 CSS 和 JS 中使⽤的⼀个抽象概念。
它和物理像素之间的⽐例取决于屏幕的特性(是否为⾼密度)以及⽤户进⾏的缩放,由浏览器⾃⾏换算。
在 Apple 的视⽹膜屏(Retina)中,每 4 个像素为⼀组,渲染出普通屏幕中⼀个像素显⽰区域内的图像,从⽽实现更为精细的显⽰效果。
此时, 250px 的元素跨越了 500 个物理像素的宽度。
如果⽤户进⾏了放⼤,那么⼀个 CSS 像素还将跨越更多的物理像素。
1.2 三种视⼝移动端浏览器通常宽度是 240px~640px,⽽⼤多数为 PC 端设计的⽹站宽度⾄少为 800px,如果仍以浏览器窗⼝作为视⼝的话,⽹站内容在⼿机上看起来会⾮常窄。
因此,引⼊了布局视⼝、视觉视⼝和理想视⼝三个概念,使得移动端中的视⼝与浏览器宽度不再相关联。
布局视⼝(layout viewport)⼀般移动设备的浏览器都默认设置了⼀个 viewport 元标签,定义⼀个虚拟的布局视⼝(layout viewport),⽤于解决早期的页⾯在⼿机上显⽰的问题。
详解VC++中的窗口与视口
I S O T R O P I C 和M M A N I S O T R O P I C 。这 个 固定 的点 。通过这 个点 , 引出两条 坐标
—
两种 映射 模式允许 改变 比例 因子和原点 。 线 , 建立逻辑坐标系 , 长度单位和正方向则 应窗 口和视 口的原点坐标 , 且默认均为( 0 , 使用 MM— I S O T R O P I C 时, x 和Y 始终保持 1 : 通过 S e t Ma p Mo d e 来设置。
’ j { j 创 靳 圃 蛆
、 Ⅵ } 、 { f ■ ■黼
给绘 图函数 的x 和y 值, 它们 可以表示英寸 和毫 米 , 而设备单位是 x 和Y 在屏 幕上 的像
素数 , 或是打印机上的点阵数 。 映 射模 式 决定 了 Wi n d o w s 将 怎样 把 G D I 函数 中指定 的逻辑坐标映射为设备坐
1 的 比例 。
窗 口原 点 只 是 逻 辑 坐 标 系 中一 个 可 变 x个像 素 , 垂直 方向向下滚动了 Y个像 素 ,
值得 注 意 的是 , 使 用 MM_ T E X T映射 点 , 这个点 的坐标是 通过 S e t Wi n d o w O r g 来 则 应 该 认 为 客 户 区域 的 左 上 角 为 窗 口原 点 模式时候 , Y 轴是垂直向下增大的 , x 轴是 向 设 置 的 。 右增大 的。而其他映射模式 的v 轴是沿屏
( X v i e w p o  ̄ 一 X v i e w o r g ) / ( X w i n .
于屏幕 的左 上角 , 设 备 点始 终位 于 ( 0 , 0 )
点。
标 。通过设置映射 方式 , 可 以设 置窗 口下 d o w — X w i n o r g ) = X v i e w e x t / X w i n e x t ;( Y v i e w . 的逻辑 坐标 系 的长度 单位 和坐 标 的正方 p o r t — Y v i e w o r g ) / ( Y w i n d o w — X w i n o r g ) 向。在计 算机 绘 图时 , Wi n d o w s 会将 逻辑 坐标 转换成设备 坐标 , 而逻辑坐标 和设备 式 通 过 设 备 环 境 类 的 一 个 成 员 函 数
(完整版)24小时自学虚幻引擎4游戏开发1
操作 将视口摄像机聚焦到视口中选中的Actor上。
Alt+鼠标左键+拖动 围绕单个的支点或兴趣点翻转视口。
Alt+鼠标右键+拖动 向前推动摄像机使其接近或远离单个支点或兴趣点。
Alt+中键单击+拖动 根据鼠标移动的方向将摄像机向左、右、上、下移动。
测试关卡
在编辑器中运行(PIE)
运行关卡
当创建项目时,会默认创建关卡。在关卡测 试过程中,会按照你选择的“游戏模式”模 板的定义,使用玩家与游戏交互时将用到的 输入系统。
某些属性是否显示取决于当前选择的Actor 类。
导航场景
视口导航
在透视视口中导航场景
不同于其他三维应用程序(聚焦和围绕一个正在构建的资源),虚拟引擎视口移 动功能按键专门用于对大型游戏关卡进行布景,其中快速穿越大范围区域的功能 非常关键。
功能按钮 左键单击+拖动
操作 前后移动视口摄像机和左右旋转视口摄像机。
初学者内容包(Starter content):你可 以向项目添加要使用的基本资源。
创建新项目
1
2
3
4
5
6
7
8
9
10
在启动器中 单击启动。
选择新建项 目选项卡。
选择蓝图选 项卡。
选择游戏模 式模板。
选择目标硬 件。
选择目标图 形质量。
决定是否需 要初学者内
容包。
在硬盘上选 一个位置。
指定项目名 称。
虚幻引擎4编辑器界面
在编辑器中运行(PIE)
在编辑器中运行(PIE)是指一组选项,使 用这组选项无需事先编译或打包内容就可以 进行游戏测试。
PIE预览选项位于“关卡编辑器”(Level Editor)工具栏的“运行”(Play)按钮下 。
视口的名词解释是什么
视口的名词解释是什么视口(Viewport)是一个在网页设计中经常使用的术语,它指的是用户在浏览器中能够看到的部分。
具体来说,视口是由浏览器显示网页内容的区域,它的大小可以根据设备屏幕的尺寸和用户的浏览器窗口大小自动调整。
在传统的计算机屏幕上,视口通常等于浏览器窗口的大小,用户可以通过滚动条来移动视口,从而查看超过窗口大小的页面内容。
然而,随着移动设备的普及,用户在手机和平板电脑上浏览网页的场景越来越多,对于这些不同尺寸的屏幕,视口的概念发生了一些变化。
移动设备上的视口在默认情况下通常比屏幕实际的尺寸要小,这是因为移动设备的屏幕通常比较小,而网页内容在这样的屏幕上显示时可能会显得过大,导致用户需要不断的缩放和滚动来查看完整的内容。
为了解决这个问题,移动浏览器一般会使用一个虚拟的视口,将网页内容适配到合适的大小,以便用户能够更方便地浏览。
虚拟视口的大小可以通过设置HTML中的meta标签来调整,通过设置viewport属性,可以让网页内容根据设备的屏幕大小和分辨率进行自适应。
例如,可以设置viewport的宽度为设备的宽度,并禁止用户进行缩放操作,这样就能够确保网页内容在不同设备上都能够以合适的比例进行显示。
除了虚拟视口,移动设备上还存在着布局视口(Layout Viewport)和理想视口(Ideal Viewport)的概念。
布局视口指的是移动设备上用于呈现网页内容的实际区域大小,而理想视口是指在移动设备上最佳的页面展示效果。
布局视口的大小可以通过浏览器的缩放操作来改变,用户可以通过手势进行缩放,但这会导致页面内容的重排和重新渲染,影响用户的浏览体验。
而理想视口则是指网页在移动设备上以最佳的布局和字号进行展示的效果,开发者可以通过设置viewport属性来定义理想视口的大小和缩放行为。
对于网页设计和开发人员来说,理解和正确使用视口概念非常重要。
通过合适地设置viewport属性,可以确保网页在不同设备上都能够以合适的比例进行显示,提升用户的浏览体验。
如何使用CAD中的视口
如何使用CAD中的视口
布局空间的视口实际上跟模型空间的图形窗口是类似的,相当于一个相机的镜头,通过此镜头我们可以观察和显示模型的不同部分,也可以调整图形显示的大小,也就是我们说的缩放、平移。
下面就让小编告诉你如何使用CAD中的视口的方法,一起学习吧。
使用CAD中的视口的方法
1、切换到布局空间,新建一个图层,在该图层上绘制好图框,如下图所示
关于图框,每个行业都有图框绘制标准,很多单位都有规定使用的图框。
如果你还没有图框,可以暂且不管,只需要在模型空间后随意画一些图形后切换到布局,暂时不用管图框的事情。
2、输入VPORTS命令,会弹出一个“视口”对话框,我们暂且不管里面的内容,直接点“确定”按钮,命令会提示:“指定第一个角点或 [布满(F)] <布满>:”
3、在图框中捕捉两个对角点,绘制如下图所示的视口。
建立视口后,相当于布局上放置了一个窗口,通过窗口可以看到的就是模型空间中绘制的图形,如下所示。
在将光标移动到视口中间双击,可直接从视口进入到模型空间中,视口边界变成粗线,此时可以完成所有模型空间中的操作。
从视口进入到模型空间后,利用平移和缩放功能来调整视口的显示范围和效果,而真正要修改图纸时,切换到模型空间中会更方便。
4、将光标移到视口之外并双击,或者单击底部状态栏的模型图纸切换按钮或执行PS命令也可从视口退出到图纸空间。
5、关闭“视口”图层。
可以看到,关闭视口图层后,视口的边框自动被隐藏,但视口所产生的“透视效果”不会消失,这正是我们需要的效果。
计算机窗口知识点总结
计算机窗口知识点总结一、计算机窗口概述计算机窗口是指计算机屏幕上的一个矩形区域,用来显示应用程序的内容。
计算机窗口通常包括标题栏、菜单栏、工具栏、状态栏等部分,以及显示内容的区域。
在传统的桌面操作系统中,窗口是计算机界面的主要组成部分,用户通过窗口来操作计算机中的应用程序。
计算机窗口的出现极大地改变了人们与计算机交互的方式,使得用户可以同时运行多个应用程序并且在它们之间进行切换。
窗口还可以拖拽、最小化、最大化、关闭等,极大地提高了用户的操作效率。
二、计算机窗口的基本结构1. 标题栏窗口的标题栏通常位于窗口的最顶部,显示窗口的标题以及最小化、最大化、关闭等按钮。
用户可以通过点击这些按钮来控制窗口的大小和状态。
2. 菜单栏菜单栏通常位于窗口的顶部或者左侧,用来显示应用程序的功能菜单,用户可以通过点击菜单项来执行相应的操作。
3. 工具栏工具栏通常位于窗口的顶部或者左侧,用来显示常用的操作按钮,用户可以通过点击这些按钮来执行相应的操作。
4. 窗口内容区域窗口内容区域用来显示应用程序的内容,通常是一个矩形区域,可以显示文本、图像、视频等内容。
5. 状态栏状态栏通常位于窗口的底部,用来显示应用程序的状态信息,比如进度条、文件大小、网速等。
6. 滚动条滚动条通常出现在窗口的右侧和底部,用来控制窗口中内容的显示范围。
三、计算机窗口的基本操作1. 打开窗口打开窗口通常是通过双击应用程序的图标或者通过操作系统的应用菜单来实现的。
2. 关闭窗口关闭窗口通常是通过点击窗口右上角的关闭按钮来实现的,也可以通过菜单栏的“关闭”命令来关闭窗口。
3. 最小化窗口最小化窗口通常是通过点击窗口右上角的最小化按钮来实现的,也可以通过菜单栏的“最小化”命令来最小化窗口。
4. 最大化窗口最大化窗口通常是通过点击窗口右上角的最大化按钮来实现的,也可以通过菜单栏的“最大化”命令来最大化窗口。
5. 恢复窗口恢复窗口通常是通过点击窗口右上角的还原按钮来实现的,也可以通过菜单栏的“恢复”命令来恢复窗口。
qabstractscrollarea 用法
一、QAbstractScrollArea简介QAbstractScrollArea是Qt框架中的一个抽象基类,用于提供带有滚动条的窗口部件的基本功能。
它可以作为其他窗口部件的基类,为它们提供滚动条管理的功能。
通过QAbstractScrollArea提供的功能,开发者可以方便地实现带有滚动条的复杂界面,提升用户体验。
二、QAbstractScrollArea的主要功能1. 滚动条管理QAbstractScrollArea提供了一套完善的滚动条管理功能,包括滚动条的创建、显示、隐藏和状态控制等。
开发者可以方便地通过QAbstractScrollArea提供的接口来管理窗口部件的滚动条,实现对界面内容的滚动控制。
2. 视口管理QAbstractScrollArea通过视口(viewport)来管理界面的显示区域,开发者可以通过视口来设置界面的显示范围和位置。
视口的管理功能可帮助开发者实现复杂的界面布局和显示控制。
3. 鼠标滚动事件处理QAbstractScrollArea提供了对鼠标滚动事件的处理功能,开发者可以通过重写相关的事件处理函数来实现对鼠标滚动事件的响应。
这为开发者提供了在界面滚动时实现特定操作的可能性。
4. 性能优化QAbstractScrollArea在滚动操作时能够对界面进行性能优化,通过减少不必要的绘制和刷新操作,提升界面的滚动流畅度和响应速度。
开发者可以充分利用QAbstractScrollArea提供的性能优化功能,提供更好的用户体验。
三、QAbstractScrollArea的使用方法1. 继承QAbstractScrollArea开发者可以通过继承QAbstractScrollArea来创建自定义的带有滚动条的窗口部件。
在子类中可以重写QAbstractScrollArea提供的虚函数,实现特定的滚动处理逻辑和界面绘制控制。
2. 设置视口内容通过设置QAbstractScrollArea的视口内容,开发者可以在滚动区域中显示特定的界面内容。
计算机绘图(本)期末考试模拟习题
《计算机绘图》期末考试模拟习题《计算机绘图》期末考试题型分4类:单项选择题、填空题、是非判断题和简答题,具体的分值如下:1、单项选择题(每小题3分,共30分);2、填空题(每空2分,共20分);3、是非判断题(每小题2分,共30分);4、简答题(共20分,3-4个)。
为了方便大家学习,顺利的通过期末考试,现总结一些模拟习题,供大家学习参考!一、单项选择题(从所给的四个选项中,找出你认为是正确的答案,将其编号填入题中括号内。
)1、取消命令执行的键是( B )。
A.按ENTER键B.按ESC键C.按鼠标右键D.按F1键2、在AutoCAD软件中,重新执行上一个命令的最快方法是( A )。
A.按ENTER键B.按空格键C.按ESC键D.按F1键3、在AutoCAD中,下列坐标中使用相对极坐标的是(D )。
A. (20,-10)B. (20,0)C. (@20,10)D. (@20<600)4、用相对直角坐标绘图时以哪一点为参照点( A )。
A.上一指定点或位置B.坐标原点C.屏幕左下角点D.任意一点5、默认情况下用户坐标系统与世界坐标系统的关系,下面( C )说法正确。
A.不相重合B.同一个坐标系C.相重合D.有时重合有时不重合6、缺省的世界坐标系的简称是( D )。
SB.UCSC.UCS1D.WCS7、删除一条直线后,又画了一个圆,现在要在不取消圆的情况下,恢复直线,可用( B )命令。
A. UNDOB. OOPSC. REDOD. RESTORE8、哪个功能健可以进入文本窗口(B )。
A.功能键F1B.功能键F2C.功能键F3D.功能键F49、下面哪个层的名称不能被修改或删除(C )。
A.未命名的层B.标准层C.0层D.缺省的层10、在机械制图中,常使用“绘图”|“圆”命令中的( B )子命令绘制连接弧。
A .三点B.相切、相切、半径C.相切、相切、相切D.圆心、半径11、以下哪种说法是错误的( D )。
CAD简答题
C A D简答题(总2页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--简答题1.AutoCAD 的命令输入的方式有几种参考答案:命令输入方式有4 种:1)、点击工具栏中的图标; 2)、点击屏幕菜单中的命令;3)、从命令行中输入;4)、按回车键重复执行命令。
2.AutoCAD 提供了哪12 种尺寸标注类型参考答案:1)、线性尺寸标注;2)、对齐尺寸标注;3)、坐标尺寸标注;4)、半径尺寸标注;5)、直径尺寸标注;6)、角度尺寸标注;7)、基线尺寸标注;8)、连续尺寸标注;9)、标注圆心标记;10)、引线标注;11)、快速引线标注 12)、快速标注。
3.简述块的主要作用。
块的主要作用如下:(1)、建立图形库;(2)、节省存储空间;(3)、便于修改和重定义;(4)定义非图形信息。
4.什么是视口什么是活动视口什么是当前视口参考答案:视口:为了能在屏幕上同时观察某些复杂图形的不同部分,操作者可以在屏幕上同时打开多个窗口,这些窗口即被称为视口。
视口分为活动视口和当前视口。
活动视口:若某个视口可以用来显示图形的模型空间视图且打开后是可见的,同时设置为ON 的可见视图数小于系统允许的活动视口的最大数,则该视口为活动视口。
当前视口:在屏幕上虽然可以显示多个模型空间视口,但在同一时间只能有一个视口为当前视口。
5.简述在AutoCAD 中,如何判断Z 轴的正方向和绕轴线旋转的正方向。
参考答案:在AutoCAD 中通过右手定则来确定直角坐标系中Z 轴的正方向和绕轴线旋转的正向。
①右手定则的使用方法是:伸开右手的拇指、食指和中指。
拇指指向X 轴正方向、食指指向Y 轴正方向、中指指向Z 轴正方向。
Z 轴的正方向垂直由X 轴与Y 轴所确定的作图平面。
②轴线旋转的正方向是:将右手握成拳头状,用右手拇指指向所测轴的正方向,则其余四指表示该轴旋转的正方向。
6.绘图过程中常需要输入点的位置,AutoCAD 提供了哪几种输入点的方式参考答案:(1)用键盘在命令行中输入点的坐标值。
关于窗口与视口
关于窗口与视口,设备坐标与逻辑坐标,SetWindowExt与SetViewportExt,SetWindowOrg与SetViewportOrg一,窗口与视口视口即为程序的客户区,窗口是自己定义的逻辑区域.窗口的概念就是为了实现设备无关性的.不管何种设备(比如屏幕\打印机等),都与窗口无关,因为窗口是自己定义的,是个虚拟屏幕.而与设备有关的是视口.所以,视口的单位是像素,而窗口的单位可以自己定义,可以为像素,英寸,毫米或者其它单位. 二,设备坐标与逻辑坐标设备坐标依赖于视口,逻辑坐标依赖于窗口.也即视口使用的是设备坐标,而窗口使用的逻辑坐标.设备坐标始终是以客户区左上角为原点,以右为x轴正方向,以下为y轴正方向.单位是像素.这个坐标体系是不变的.逻辑坐标则需要函数自己定义.如在默认的映像模式下(MM_TEXT),逻辑坐标与设备坐标是一致的,单位也相同.定义自己需要的逻辑坐标,在下面会提到.三,SetWIndowExt与SetViewportExt这两个函数可以定义窗口与视口之间的映射关系.用法是(MSDN):virtual CSize SetWindowExt(int cx,int cy);CSize SetWindowExt(SIZE size);virtual CSize SetViewportExt(int cx,int cy);CSize SetViewportExt(SIZE size);注意:SetViewportExt的参数使用的设备坐标,单位是像素.SetWindowExt的参数使用的逻辑坐标.映像的方式是将SetWindowExt参数中所定义的窗口大小投影到SetViewportExt参数所定义的视口大小.如有以下两句语句: SetWindowExt(600,400); //定义一个窗口大小,但不是说窗口就这么大,是为了//投影到SetViewportExt所设定的视口中SetViewportExt(200,200);//定义了一个视口大小,把之前定义的窗口(宽为600,高为400个逻辑单位)投影到视口(宽为200像素,高为200像素).那么根据不同的映像模式,投影方式也不同.又如:窗口为(600,400): 视口为(200,200):如果是MM_TEXT,MM_ISOTROPIC等模式,映像到视口中则为:可以看到时,视口下面多出一片空白区域.如果是MM_ANISOTROPIC模式,映像到视口中则为:窗口图像发生了拉伸.这是因为MM_ANISOTROPIC映像模式X,Y轴的投影比例可以不同,其他映像模式X,Y轴映像比例相同.另外:在SetViewportExt(int x,int y)中,如果x或者y为负的时候,则表示在窗口中该轴的正方向与视口该轴的正方向相反(为什么是窗口中的轴方向发生了变化,而不是视口中的呢?这是因为视口的XY的正方向始终是向右和向下.当然,负号放在哪一个函数中结果都是一样的,只不过要保证只能有一个有负号.)如:视口坐标系:窗口坐标系:setwindowext(600,400);setviewportext(200,-200);窗口坐标系则变为:以上三张图原点都在客户区的左上角.当然,下面的语句与上面两句的结果完全相同:setwindowext(600,-400);//在这儿加上负号setviewportext(200,200);//四,SetWIndowOrg与SetViewportOrg这两个函数的作用是实现窗口坐标系的移动.(可不是视口坐标系哦,它可是不会变的)其原理是窗口在映射到视口的时候,两者的坐标原点始终都是重合的.如:红线为窗口坐标系,黑线为视口坐标系;并假定是在MM_TEXT模式下(单位都是像素);运行以下语句:SetWindowOrg(10,40);//则变为:40(10,40)是设备坐标系原点在逻辑坐标系中坐标(注意:是以逻辑坐标系为基准),单位是逻辑单位.也就是说这个函数是设定设备坐标系原点在逻辑坐标系中的位置.再运行以下语句:SetViewportOrg(20,10);//则变为:40+10=50先看看MSDN上的定义:xSpecifies the x-coordinate (in device units) of the origin of the viewport. The value mustbe within the range of the device coordinate system.ySpecifies the y-coordinate (in device units) of the origin of the viewport. The value mustbe within the range of the device coordinate system.x指的是视口原点的X坐标,单位是设备单位(即像素);后面又说它的值必须在设备坐标系范围之内.但没说明这个设备坐标系范围是什么范围,不知哪位大侠可以告诉我.可以看到逻辑坐标系原点在设备坐标系中向X轴正方向移动20像素,向Y轴正方向移动10像素.(20,10)是逻辑坐标系原点在设备坐标系中的坐标,单位是设备单位(像素).参考坐标系是设备坐标系.但为什么实际的结果是不是那样,逻辑坐标系原点在设备坐标系中的坐标是(10,50);我个人认为这是因为两个函数SetWindowOrg(),SetViewportOrg()的参考基准是不同的(前者是设定设备坐标系在逻辑坐标系中的位置,后者设定是逻辑坐标系在设备坐标系中的位置), 参数单位也不同.所以才会发生相对的移动.而不是绝对的定位(设备坐标系的原点始终在客户区左上角) .另外注一下:网上一些朋友认为:SetWindowOrg()是设定客户区左上角在逻辑坐标系中的坐标,SetViewportOrg()是使绘图坐标原点向右下方移动.但我认为这样理解很难将各两者相联系起来,不利于理解记忆.。
DrawDibDraw函数的使用方法
DrawDibDraw函数的使⽤⽅法使⽤windows的的⾃带的函数来显⽰图像可能始终还是绕不开两个概念,视⼝和窗⼝。
视⼝--- 屏幕上的⼀个显⽰⽤的矩形框。
窗⼝--- 完整图像上的⼀个⽤于取数的矩形框。
屏幕的宽度、⾼度和视⼝参数⽤于控制向显⽰存储器中写数。
图像的宽度、⾼度和窗⼝参数⽤于控制从图像⽂件中取数。
利⽤DrawDibDraw函数可以实现视频显⽰和单帧图像的显⽰,⽽且对于显⽰图像的移动和放缩,也可以轻松实现。
但是在实际的显⽰中可能都会把屏幕的概念利⽤GetClientRect()换成客户区。
因为图像总是在客户区进⾏显⽰。
为了让图像正常显⽰(即不经过缩放),那么窗⼝的⼤⼩必定和视⼝的⼤⼩是完全相同的,只是窗⼝的起始点和视⼝的起始点坐标标准是不⼀样的,所以这两点坐标显然是不⼀样的。
例如rc即为我们设的客户区的CRect类的对象,这⾥我们假设视⼝的⼤⼩等于客户区的⼤⼩。
DrawDibDraw(m_hDrawDib,m_hDC,//视⼝rc.left,//⽬的图像的横坐标在客户区的横坐标起始,视⼝的横坐标起始rc.top,//⽬的图像的纵坐标在客户区的纵坐标起始,视⼝的纵坐标起始rc.Width(),//⽬的图像的宽度,视⼝的图像宽度rc.Height(),//⽬的图像的⾼度,视⼝的图像⾼度&(m_pBmpInfo->bmiHeader),m_pSourceDat,//整幅图像的数据起始⾸地址//窗⼝dxs,//源图像的横坐标起始,窗⼝横坐标起始dys,//源图像的纵坐标起始,窗⼝纵坐标起始rc.Width(),//源图像的宽度,窗⼝宽度rc.Height(),//源图像的⾼度,窗⼝⾼度0);这样就可以正常显⽰⼀副图像了,⽽且随着dxs和dys的改变,可以改变窗⼝取数的位置,从⽽显⽰的是移动后的图像。
DrawDibDraw这个函数将DIB绘⾄屏幕。
BOOL DrawDibDraw(HDRAWDIB hdd,HDC hdc,int xDst,int yDst,int dxDst,int dyDst,LPBITMAPINFOHEADER lpbi,LPVOID lpBits,int xSrc,int ySrc,int dxSrc,int dySrc,UINT wFlags);参数hdd DrawDib DC的句柄。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
窗口、视口、屏幕显示详解--计算机绘图基本功窗口:逻辑环境中的一小部分,是一个矩形框;世界坐标系是逻辑坐标,SetWindowOrg(X,Y)设置窗口的逻辑坐标点(X,Y)映射为的设备环境的设备点(0,0)。
设备环境:显示器、打印机等等。
坐标系为设备坐标系,正Y轴向下,正X轴向右,原点在左上角,固定不变,不可修改!其X、Y的负半轴为虚设,无法显示或无法打印图形。
视口:设备环境中的一部分,一个矩形框;坐标系同设备环境。
SetViewportOrg(X,Y)设置视口矩形框的坐标原点,默认值为设备坐标原点。
视口是窗口的按比例的映像(投影)。
1.窗口和视口以及设备环境出现的缘起窗口和视口实际上描述的是同一个客观场景,它们之间的区别仅仅在于两者坐标系的单位不同。
设备环境就是显示设备。
窗口和视口中的场景必须通过映射模式正确的显示到设备环境中。
默认情况下,Windows GDI绘图中的窗口坐标原点、视口坐标原点以及设备点重合在一起都是在设备点(0,0)处。
Windows GDI的设备环境原点是位于屏幕的左上角,设备点始终位于(0,0)点,x轴向右,y轴向上;OpenGL使用的窗口坐标和WindowsGDI使用的窗口坐标是不一样的。
OpengL默认世界窗口坐标原点位于屏幕中心,x轴向右,y轴向上。
视口原点在屏幕左下角。
视口与窗口表征的是同一个实际几何物体,所以有窗口必定有视口,有视口必定有窗口。
窗口或视口可以理解为用眼睛看到的物体实体,例如一个球,设备环境显示区域(显示屏)可以理解为由于计算机屏幕长宽比不同,实际物体在计算机屏幕上看到的最终显示结果,例如显示屏中的球看起来变成一个椭球。
几乎在所有的GDI函数中使用的坐标值都是采用的逻辑单位,也就是物体实际多大就是多大。
Windows 必须将逻辑单位转换为“设备单位”---像素,也就是物体在设备环境(显示屏或打印机)显示后看起来应该多大。
这种转换是由映射方式、窗口和视口的原点以及窗口和视口的范围所控制的。
通过不同的映射方式可以在逻辑单位下改变窗口原点的位置而将物体现实在设备环境中,也可以在以像素为单位的视口坐标系下移动视口将物体显示在显示屏上,不管对窗口和视口原点作什么改变,设备点(0,0)始终是客户区的左上角,两者都是为了让物体在显示屏上现实。
调整窗口原点和调整视口原点可以达到相同的效果。
视口是与设备相关的一个矩形区域,坐标单位是与设备相关的,直观的视口原点坐标的移动就是dc的移动。
窗口的坐标是逻辑坐标,与设备无关。
窗口坐标的原点与视口坐标的原点始终对应于同一点。
对于同一个图形,用窗口坐标系统表达的该区域的长和宽与视口的坐标系统表达的长和宽是不同的,因单位不同。
二者就定义了这两个坐标系统的比例关系。
程序作图时,使用的坐标总是是窗口坐标,而实际的显示或输出设备却各有自己的坐标。
例如,有的打印机设备水平和垂直分辨率不同,其象素实际上是长方形。
程序编写画一个圆,若不经任何坐标转换,在打印机上输出的就是个椭圆。
在MFC中ONDRAW之前已经调用了ONPREPAREDC函数为你做好映射模式。
默认情况下,其映射模式为MM_TEXT模式,即1:1模式。
要改变默认映射模式应重载OnPrepareDC重新设置自己的映射模式。
为了提高绘图精度,经常需要改变映射模式。
2.窗口和视口理解要点窗口与视口一向是初学者比较难以理解的难点,本人以前也是糊里糊涂的,不过最近有时间去深入研究之后,才彻底弄明白,摆脱了以前很多错误的观念。
弄清楚了这些才会更好的使用不同的坐标影射模式,更灵活的为自己的绘图带来便利:首先要清楚窗口和视口的坐标原点始终是同一个点,窗口和视口中的内容是同样的内容。
设备坐标(显示器)中则会根据视口或窗口原点的改变而显示出不同的内容。
在MM_TEXT映射模式下世界坐标系第三象限的内容就是窗口坐标系下第一象限的内容,所以有SetViewportOrg(x,y)与SetWindowOrg(-x,-y)具有相同的效果。
这个很难理解但是这是事实。
“设备环境”如显示屏始终是只有左手坐标系xoy第一象限的区域。
开始时窗口坐标原点、视口坐标原点以及设备点重合在一起都是在客户区的左上角,为了将物体显示在显示屏上,通过SetWindowOrg(x,y)将"画布"(世界坐标系原点)向屏幕的左边移动x个单位,向屏幕的上方移动y个单位。
SetViewportOrg(x,y)是将"画笔"(视口原点)向屏幕的右边移动x个单位,向屏幕的下方移动y个单位。
现将其关键点归纳如下:1、视口与显示设备有关,视口等同客户区,使用设备坐标。
视口是和窗口等同的一块矩形区域,它的x轴向右和y轴向下。
2、窗口与显示设备无关,窗口与视口为同一区域,但使用逻辑坐标,它的x轴向右,y轴向上。
3、窗口与视口使用不同的坐标系,但是两套坐标系的原点始终为同一点。
但该点坐标(不管是视口坐标原点还是窗口坐标原点)不一定为(0,0)。
窗口就是视口,去吧仅仅在于两者建立的坐标系不同,移动窗口的同时就是移动视口,反之亦然。
4、视口原点的位置(就是画笔dc的初始位置)仅仅由SetViewportOrgEx(x,y)函数来移动。
(x,y)是相对于客户区左上角的设备坐标,即像素),而SetWindowOrg(X,Y)设置窗口的逻辑坐标点(X,Y)映射为的设备环境的设备点(0,0)It's easy to get SetViewportOrg and SetWindowOrg confused,but the distinction between them is actually quite clear.Changing the viewport origin to(x,y) with SetViewportOrg tells Windows to map the logical point(0,0)to the device point(x,y).Changing the window origin to(x,y)with SetWindowOrg does essentia lly the reverse,telling Windows to map the logical point(x,y)to the device point(0,0)—the upper left corner of the display surface.In the MM_TEXT mapping mode,the only real difference betwe en the two functions is the signs of x and y.In other mapping modes,there's more to it than that be cause SetViewportOrg deals in device coordinates and S etWindowOrg deals in logical coordinates.<<Programing windows with MFC>>中这样来描述dc始终开始从世界坐标系的原点开始画,画笔的原点就是画布的原点就是世界坐标系的原点。
在MM_TEXT下通过SetViewportOrg(X,Y)和SetWindowOrg(-X,-Y)将世界坐标系的原点移动到设备环境坐标系下的(X,Y)点。
SetWindowOrg(-X,-Y)指设备点(0,0)处对应dc绘图的逻辑点(-X,-Y),逻辑点(0,0)在MM_TEXT映射模式下位于设备坐标系的(X,Y)点。
1)移动视口原点好比移动画笔dc,如果将视口原点设置为(xViewOrg,yViewOrg),相当于dc画笔的移动,则逻辑点(0,0)就会被映射为设备点(xViewOrg,yViewOrg),初始dc绘图在逻辑点(0,0)下笔,图形将以客户区(设备点)的(xViewOrg,yViewOrg)为中心进行绘制。
在MM_TEXT映射模式下SetViewportOrg(150,100);dc绘图坐标原点从(0,0)向右下方移动到(150,100)。
可以看出SetViewportOrg()函数可以更改设备上下文dc的坐标原点。
[cpp]view plain c opyprint?1.void CDemoView::OnPaint()2.{3. CPaintDC dc(this); // device context for painting4. dc.SetViewportOrg(150, 100);5. CPen PenBlue;6. PenBlue.CreatePen(PS_SOLID,1,RGB(0,12,255));7. dc.SelectObject(&PenBlue);8. dc.Ellipse(-100,-100,100,100);9.}2)移动窗口原点好比画布的移动,如果将窗口原点改变为(xWinOrg,yWinOrg),则逻辑点(xWinOrg,yWinOrg)将会被映射为设备点(0,0),SetWindowOrg(150,100);逻辑点(150,100)对应于设备点(0,0);不管对窗口和视口原点作什么改变,应该铭记第一设备点(0,0)始终是客户区的左上角,第二窗口和视口原点是同一个点。
[cpp]view plain c opyprint?1.void CDemoView::OnPaint()2.{3. CPaintDC dc(this); // device context for painting4. dc.SetWindowOrg(-150,-100);5. CPen PenBlue;6. PenBlue.CreatePen(PS_SOLID,1,RGB(0,12,255));7. dc.SelectObject(&PenBlue);8. dc.Ellipse(-100,-100,100,100);9.//OnDraw(&dc);10.}5、理解窗口与视口的坐标转换公式:Xviewport=(Xwindow-Xwinorg)*Xviewext/Xwinext+Xvieworg;Yviewport=(Ywindow-Ywinorg)*Yviewext/Ywinext+Yvieworg;此公式初看上去不好理解,变形如下:(Xviewport-Xvieworg)/(Xwindow-Xwinorg)=Xviewext/Xwinext;(Yviewport-Yvieworg)/(Ywindow-Xwinorg)=Yviewext/Ywinext;如此就很好理解了:逻辑坐标单位与设备坐标单位的比,即比例因子。