Windows GDI制图基本。

1.Windows能够画平行线,椭圆形线(椭圆形圆上上的曲线图)和贝塞尔曲线。

////////////7划线作用有:

(1)画一条平行线lineto bool lineto (hdchdc,int NX end,int nyend);将bool MoveToEx (hdchdc,int x,int y,LP点LP点)与MoveToEx涵数融合应用。

点纪录旧座标点(之前的所在位置)。///留意:getcurrentposionex(hdc,& pt);获得所在位置。

(2)画一系列相接的平行线。曲线将点列阵的点组合成一条线。“多平行线”不应用当今点做为起始点,反而是应用当今点做为起始点,并将所在位置设定为最终一行的终点站。多曲线制作多个相接的线。

(3)添充矩形框矩形框制作一个矩形框,并且用乳白色画笔工具添充;矩形框(HDC,XLEFT,YTOP,XRight,Ybotom)椭圆形画一个椭圆形,用乳白色画笔工具添充。椭圆形(hdc,xleft,ytop,xright,ybottom)圆角制作圆角。并且用乳白色画笔工具添充圆弧(hdc,XL,yt,xr,Yb,xc,YC) xc,在其中YC是圆角的圆弧。斜线画椭圆线。arc (hdc,xleft,ytop,xright,ybottom,xstart,ystart,xend,yend)和旋制作和旋弓和旋(hdc,xleft,ytop,xright,ybottom,xstart,ystart,xend,YEnd)Pie制作派(hdc,xleft,ytop,xright,ybottom,xstart,ystart,xend,YEnd);ArcTo和AngleArc制作椭圆形线。

//////不规则图形(hdc,apt,I count);//制作最终一点与第一点相接的不规则图形。PolyPolygon(hdc,apt,aiCount,iPolyCount);//制作好几个不规则图形。

(4)贝塞尔曲线,制作贝塞尔曲线Poinyapt [4] =(起始点,第一基准点,第二基准点,终点站)。必须特别注意的是:曲线图是以起始点到终点站的联接曲线图,基准点(调节点)没有在其中;polybenzier (hdc,apt,icount) polybenzierto (hdc,apt)。PolyDraw应用当今点做为起始点制作一系列电极连接线和贝塞尔曲线。针对好几条贝塞尔曲线,后一条的关键是前一条的终点站。

(5)矩形框涵数FillRect(hdc,&rect,hBrush);//应用规定的画笔工具添充矩形框,(不包括(Right,buttom) frameect (hdc,& rect,hbrush);//用画笔工具添充矩形,但并不是矩形框,InvertRect(hdc,& rect);//旋转清晰度,将乳白色变成灰黑色,将灰黑色变成乳白色,将翠绿色变成鲜红色。

///////对Rect集合rect (& rect,xleft,ytop,xright,ybuttom)的实际操作;//分派offset ect(& rect,x,y);//沿x,y方位挪动打气矩形框(& rect,x,y);//提升或降低矩形框的尺寸。setrectcempty(& rect);//设定0 copyect (&a,& b);将b拷贝到A单位间(&A,&B1,& B2);//将B1和B2的相交拷贝到A.UnionRect(&A,&B1,& B2);//取或且boempty = is rect empty(& rect);//分辨矩形框是不是为空。blnRect=PtlnRect(&Rect,point);//分辨点是不是在矩形框内。

deleteobject函数调用-new和delete的用法-第1张图片第二,图象座标。

1)视口:机器设备座标(清晰度)对话框:逻辑性座标,并将清晰度,mm和inch视口(机器设备)坐标转换为对话框(逻辑性)座标:公式计算:一般不用记忆力,但有独特作用。xWindow =(xViewport–xviewporg)* xWinExt/xviewpext xWinOrgyWindow =(yViewport–yviewporg)* yWinExt/yviewpext ywinnorg

(xWindow,yWindow)变换后的对话框座标(xViewport,yViewport)要改变的视口座标(xWinExt,yWinExt)是对话框范畴内的逻辑性座标;(xViewExt,yViewExt)是机器设备座标的对话框范畴。(xWinOrg,yWinOrg)是逻辑性座标的对话框起点;(xViewOrg,yViewOrg)是机器设备座标的视口起点。

2)机器设备点转换为逻辑性点DPtoLP (hdc,pPoints,in number);PPoints,iNumber是要改变的等级,比如:GetClientRect (hwnd,& rect);DPtoLP (hdc,(PPOINT) &rect,2);

将逻辑性点变换为机器设备点:lptdp (hdc,p点,in number);

3),SetMapMode(hdc,IMAP mode);//设定投射方式。初始值:MM_TEXT:每一个逻辑性模块变换为一个清晰度,x的正放向右,y的正方位往下。起点能够变更,但范畴不可以变更SetWindowOrgEx();//设定机器设备自然环境的起点setviewprogrex();//设定顾客地区的核心////起点和范畴都能够变更。MM _ isometric:将逻辑性单位转换为随意标尺轴的随意企业,能够应用SetWindowExtExSetViewportExtEx涵数特定企业,方位和标尺。

//起点能够更改,但范畴不可以更改。X的正方向是对的,Y的正方向是往上的。MM_HIENGLISH:每一个逻辑性模块变换为0.001英尺,X的正边往右边,Y的正边朝上。MM_HIMETRIC:每一个逻辑性模块变换为0.01 mm,X的正放向右,Y的正方位往上。MM _ ISOTROPIC:将逻辑性企业转化成占比轴相同的随意企业,即X轴上的一个企业相当于Y轴上的一个企业,求和函数能够用于特定轴的部门和方位。必须调节图型机器设备页面(GDI),以保证x和y的公司维持同样的尺寸(设定对话框范畴时,将调节视口以完成一样的企业尺寸)。MM_LOENGLISH:每一个逻辑性模块变换为0.01英尺,X正放向右,Y正方位往上。MM_LOMETRIC:每一个逻辑性模块变换为0.1mm,X正放向右,Y正方位往上。MM _ TWIPS每一个逻辑性模块被变换为打印出点的1/20(即1/1400英尺),正x放向右,往上y方位。

deleteobject函数调用-new和delete的用法-第2张图片Iii .GDI目标

画笔工具,画笔工具,位图文件,地区,字体样式和调色盘是能够建立的六个GDI目标。GetStockObject(obj);获得目标的返回值。delete object(obj);删掉目标。(一定要注意,它不可以在合理的设备描述表格中删掉。)除开调色盘,别的全部目标全是根据SelectObject(hdc,obj)完成的;被入选设备描述表。GetObject(HOBJ,size,lpObj);LpObj能够是下列构造。获得目标信息内容,BITMAP//BITMAP DIB section//BITMAP EXTLOGPEN//brush LOGBRUSH//brush LOGFONT//font LOGPEN//brush(1)brush(Pen)对话框初始值:BLACK_PEN建立:方式1: hpen = create pen (ipenstyle,iwidth,Cr color);iPenStyle的主要参数:PS _ SOLID单色画笔工具PS_DASH破折号画笔工具(在iWidth1中能够应用颤动色(不仅是单色)。

方式二:LOGPEN logpen //特定笔的色调,尺寸和种类的构造。跟上面一样,hPen = CreatePenIndirect(& log pen);

deleteobject函数调用-new和delete的用法-第3张图片(2)字体样式初始值:SYSTEM_FONT Creation: 1。CreateFont只应用了2个主要参数,别的全是0,比如create font (0,0,0,0,0,0,0,0,0,dwcharset,0,0,0,0,fixed _ pitch,Null) hfont create font (int八,//标识符总宽,逻辑性企业int nwidth,//int n转义,//顶角置放字符串数组int nOrientation,//标识符歪斜视角,危害单标识符int fnWeight,// bold。0-400规范,700粗字体DWORD fdwItalic,//斜体字DWORD fdwUnderline,//下横线DWORD fdwStrikeOut,//删除线DWORD fdwCharSet,// 1为初始值。特定字体样式字段名的字节数值(*忽视)DWORD fdwOutputPrecision,//输出精度*DWORD fdwClipPrecision,//剪裁精密度*DWORD fdwQuality,//期待配对字体样式* dword fdwpithandfamily,//字体样式大家族*LPCTSTR lpszFace //字眼*);字体样式:system _ font system _ fixed _ font OEM _ fixed _ font。

ANSI_FIXED_FONT.ANSI _ VAR _ FONT device _ DEFAULT _ FONT

在其中:WM _ inputlangchange:dwcharset = wparam;二:LOGFONT logfont;createfont间接性(& log font);

(3)笔触初始值:WHITE_BRUSH系统软件笔触:WHITE _ brushtgray _ Brush bright GRAY _ Brush GRAY DKGRAY _ Brush black GRAY _ Brush create:1:hbrush = create solid Brush(crcolor);二:h brush = create hatchbrush(ihatchtstyle,Cr color);//建立黑影画笔工具添充一部分为黑影,在其中:iHatchStyle的主要参数如下所示:HS_BDIAGONAL 45度对角,HS _ diagrass×HS _ FDIAGONAL 135度对角HS_HORIZONTAL HS_VERTICAL三:log brush Create brush direct(& log brush);四:hbrush = createpatternbrush(hbitmap hbmp);//建立位绘画笔,5:hbrush = createdipatternbrush pt;//为DIB位图文件建立画笔工具。CreateDIBPatternBrush,

(4)位图文件初始值:无;建立位图文件,createbitmapindirect,createcompatiblebitmap,createdibitmap,createdibsectioncreatesolidbrush第一个::HBITMAP CreateBitmap(int nWidth,//int八宽,//uint CP安全通道高,//五颜六色板总数UINT cBitsPerPel,//无清晰度十位数。CONST VOID *lpvBits //偏向色调数据信息二维数组的表针。这种色调数据信息用以设定矩形框地区中清晰度的色调。矩形框地区中的一条扫描线务必是双字节数的非负整数(不够一部分用0添充)。假如该主要参数为空,则表明沒有重新定义位图文件。);

//简单化的hbitmap createcompatible位图文件(hdcchdc,int nwidth,int nheight);

//第二个hbitmap createbitmapindirect(& bitmap);位图文件是一种位图文件构造。

(5)地区是对显示屏上的范畴的叙述,它是矩形框.不规则图形和椭圆型的组成。该地区被挑选到设备描述表格中,并可用以制作和剪裁。人物角色:IRG type = combinergn(hrgn,hrgn1,hrgn2,icombine);iCombine的主要参数:RGN_AND2个源区的公共性一部分RGN_OR除公共性一部分外的全部RGN_XOR。RGN_DIFF hRgn1没有hRgn2的RGN_COPY hRgn1的全部一部分中。(hrg N2);被忽视);iRgnType:NULLERAGE的主要参数获得空 region SIMPLEREGION获得简易的矩形框.椭圆形或不规则图形COMPLEXREGION,用ERROR: 1建立好几个不规则图形.矩形框和椭圆形的组成。建立矩形框地区:hrgn = createrectrgn (xleft,ytop,xright,ybottom);hRgn = createrectorgindirect(& rect);2.建立椭圆形剪裁地区;hRgn = createellargn(xLeft,yTop,xRight,yBottom);//hRgn = createellargindirect(& rect);三是;建立不规则图形剪裁地区hrgn = createpolygon gn(& point,icount,ipolyfilmode);

///////失效竖起(hwnd,NULL,TRUE);//使矩形框失效GetUpdateRect获得失效矩形框的座标或从WM_PAINT中的PAINTSTRUCT构造获得ValidateRect使其对地区合理:invalier gn(hwnd,hRgn,bErase);ValidateRgn (hwnd,hRgn);

SelectObject(hdc,HRgn);或是挑选ClipRgn(hdc,hRgn);选定设备描述表ExcludeClipRect用以从视频剪辑地区中清除一个矩形框,IntersectClipRect用以建立一个新的视频剪辑地区,它是前一个视频剪辑地区和一个矩形框的相交,OffsetClipRgn用以将视频剪辑地区运动到表明地区的另一部分。

四.设备描述表。

了解:设备描述表包括很多决策GDI涵数怎样在机器设备上工作中的当今特性。这种特性容许传送给GDI涵数的主要参数只包括他们的座标或尺寸信息内容,而不包含Windows在设施上表明目标时必须的全部别的信息内容。

了解2:设备描述表一般指物理学显示系统。比如视頻显示屏或复印机。

了解:设备描述表(通称DC)事实上是一个储存在GDI中的算法设计。有一些值是图形界面的“特性”,界定了一些GDI制图涵数的工作中,例如:文字色调.文字环境.TextOut涵数的X座标.Y座标投射到对话框工作区域的方法.对话框表明的字体样式。

/////

(1)留意,这不容易使失效地区合理hdc = GetDC(hwnd);//////ReleaseDC(hwnd,hdc);

(2)解决WM_PAINT信息时应用。它能够使失效地区合理并再次制作。hdc=BeginPaint(hwnd,& PS);/////////EndPaint(hwnd,& PS);

(3)能够获得非顾客地区的工程图纸信息内容。包含菜单栏.工具栏.下拉列表和对话框架构。WM_NCPAINT中的返回值,hdc = GetWindowDC(hwnd);//////ReleaseDC(hwnd,hdc);

(4)得到DC的一般方式。在视頻显示屏或复印机上,DC.hdc = createdc (text ("display "),null,null,null);//获得全部显示屏的DC////////////delete DC(hdc);

(5)获得一个主要参数与Createdc同样的DC。可是不能用这一信息内容自然环境返回值在设备描述表里写物品。/////需注意。hdc=CreateIC(TEXT("DISPLAY ").NULL.NULL.NULL);/////////delete DC(hdc);

(6)位图文件能够挑选进到內部设备描述表。随后用GDI涵数当政图上绘图。hdcMem = CreateCompatibleDC(hdc);//位图文件被入选內部设备描述表//////////DeleteDC(hdcMem);

(7)获得元文档的设备描述表,建立元文档。hdcMeta = CreateMetaFile(pszFilename);//////////HMF = ColseMetaFile(hdcMeta)

////获得信息(8)获得视頻体现的尺寸和色调等信息内容。int iValue=GetDeviceCaps(hdc,ilndex);

//////////////////////储存设备描述表。(9)SaveDC(hdc);能够数次储存,RestoreDC(hdc,-1);修复DC五.设备描述表的特性。

1)添充一些室内空间隔。比如点和斜线中间的室内空间添充。环境方式:应用SetBkMode(hdc,iBkMode)改动(1)不全透明(系统软件默认设置),间距添充背景颜色。改动:SetBkColor(hdc,crColor);//改动背景颜色GetBkColor(hdc);获得背景色(2)全透明不添充间距,不擦掉环境,全透明方式。

2)制作方式:用笔刷制作事实上是画笔工具清晰度与总体目标部位初始清晰度中间的布尔运算。初始值::R2 _ copy pen;改动:SetROP2(hdc,iDrawMode);get:iDrawMode = getrop 2(hdc);

评论(0条)

刀客源码 游客评论