vb gdi+绘图,winform gdi+画图

  vb gdi+绘图,winform gdi+画图

  方法(详细参数及其调用请参考MSDN):

  1、HWND FindWindow(LPCTSTR lpclass name,LPCTSTR lpWindowName)

  HWND find window ex(HWND HWND parent,HWND hwndChildAfter,LPCTSTR lpClassName,LPCTSTR lpWindowName)

  2、HWND WindowFromPoint(点点)

  3、BOOL回调enumchilproc(HWND HWND,LPARAM lParam)

  BOOL回调EnumChildWindows(HWND HWND parent,WNDENUMPROC lpEnumFunc,LPARAM lParam)

  BOOL回调enum windows(WNDENUMPROC lpEnumFunc,LPARAM lParam)

  BOOL回调enumwindowproc(HWND HWND,LPARAM lParam)

  其次,从窗口句柄获取设备环境句柄HDC

  方法:BeginPaint、GetWindowDC、GetDC。这些函数都需要第一步中HWND的句柄。调用这些函数后,应该释放句柄,并使用相应的EndPaint和ReleaseDC进行清理。

  1.使用BeginPaint获得HDC

  HDC hdc

  PAINTSTRUCT ps//保存

  hdc=:BeginPaint( hwnd,PS);

  //在此添加绘图代码

  *面漆(hwnd,PS);

  注意:获得的hdc有效区域只是客户区无效区域的设备环境句柄,不包括标题栏、边框等。

  2.通过GetWindowDC获取HDC

  HDC HDC=:GetWindowDC(hwnd);

  //在此添加绘图代码

  * release DC(hwnd、hdc);

  描述:绘图区域是整个窗口(边框、标题栏和客户区的总和)。

  3.GetDC用于获取HDC

  HDC HDC=:GetDC(hwnd);

  //在此添加绘图代码

  * release DC(hwnd、hdc);

  注意:获取的hdc的有效区域只是客户区域有效区域的设备环境句柄,不包括标题栏、边框等。

  三、图形绘制方法

  1,画笔创建笔

  在绘画之前,选择画笔。画笔的功能是画边框。其功能原型如下:

  温迪亚皮HPEN WINAPI CreatePen(

  __in int iStyle,//画笔的类型,比如是实线还是虚线等。

  __in int cWidth,//行的宽度。

  _ _ incolorfcolor//线条的颜色。

  );

  istyle参数的可选值:

  PS _ SOLID=0;//实线

  PS _ DASH=1;//线段线;所需笔宽=1

  PS _ DOT=2;//虚线;所需笔宽=1

  PS _ dash dot=3;//线,点;所需笔宽=1

  PS _ DASHDOTDOT=4;//线,点,点;所需笔宽=1

  PS _ NULL=5;//不可见

  PS _ inside frame=6;//实线;但是笔的宽度向内延伸。

  返回值是画刷类型,选择SelectObject函数。被选中后,原笔刷的手柄被返回用于恢复。使用DeleteObject函数在绘制完图形后释放它。

  选择功能描述:

  函数:这个函数选择一个对象到指定的设备上下文环境,新的对象替换以前的同类型对象。

  原型:HGDIOBJ选择对象(HDC HDC,HGDIOBJ HGDIOBJ);

  参数:

  Hdc:设备上下文环境的句柄。

  Hgdiobj:所选对象的句型。指定的对象必须由以下函数创建。

  位图:创建位图、间接创建位图、创建兼容位图、创建位图、创建位图(只有内存设备上下文可以选择位图,同时只有一个设备上下文可以选择位图)。

  Brush: CreateBrushinDirect,CreateDibPatternBrush,CreateDibPatternBrush,CreateHatchBrush,CreatePatternBrush,CreateSolidBrush。

  字体:CreateFont,CreateFontIndirect。

  Pen: CreatePen,CreatePenIndirect。

  区域:Combinergn、CreateEllipticrGN、CreateEllipticrGNindirect、CreatePolygonRGN、CreateRectrgGN、CreateRectrgNindirect。

  返回值:如果所选对象不是区域,且函数执行成功,返回值为被替换对象的句柄;如果所选对象是一个区域,并且函数执行成功,则返回以下值;

  删除功能描述:

  函数:这个函数删除一个逻辑笔、画笔、字体、位图、区域或调色板,并释放所有与对象相关的系统资源。删除对象后,指定的句柄无效。

  原型:Bool删除对象(HGDIOBJ H对象);

  参数:

  逻辑笔、画笔、字体、位图、区域或调色板的句柄。

  返回值:成功,返回非零值;如果指定的句柄无效或已被选入设备上下文,则返回值为零。

  2.画笔

  画笔的作用主要是填充区域的颜色。创建画笔的方法如下:

  创建一个SolidBrush函数

  函数:这个函数用指定的颜色创建一个逻辑画笔。

  作用原理:hbrush创建实体画笔(colorref Cr color);

  参数:

  指定画笔的颜色。

  返回值:如果函数执行成功,返回值标识一个逻辑实刷;如果函数失败,返回值为NULL。

  b、GetStockObject函数

  函数:这个函数检索预定义的备用笔、画笔、字体或调色板的句柄。

  原型:hgdiobjgetStockObject(intfnObject);

  参数:

  FnObject:指定对象的类型。该参数可以取下列值之一;

  黑_刷:黑刷;

  DKGRAY_BRUSH:深灰色画笔;

  DC _画笔:在Windows98、Windows NT 5.0及更高版本中,是纯色画笔,默认颜色为白色。您可以使用SetDCBrushColor函数更改颜色。更多信息,请参考下面的评论。

  GRAY_BRUSH:灰色画笔;

  HOLLOW_BRUSH:空刷(相当于HOLLOW _ BRUSH);

  LTGRAY_BRUSH:亮灰色画笔;

  NULL_BRUSH:空刷(相当于hollow _ BRUSH);

  WHITE_BRUSH:白刷;黑色_钢笔:黑色钢笔;

  DC _笔:在Windows98、Windows NT 5.0及以后的版本中,是纯色笔,默认颜色是白色。您可以使用SetDCPenColor函数来更改颜色。有关更多信息,请参见下面的评论部分。

  白色_钢笔:白色钢笔;

  ANSI_FIXED_FONT:在Windows中,是固定间距(等宽)的系统字体;

  ANSI_VAR_FONT:在Windows中,是可变间距(比例间距)系统字体;

  DEVICE _ DEFAUCT _ FONT:windows nt中与设备相关的字体;

  DEFAULT_GUI_FONT:菜单、对话框等用户界面对象的默认字体;

  OEM_FIXED_FONT:原始设备制造商(OEM)相关的固定间距(等宽)字体;

  SYSTEM_FONT:系统字体。默认情况下,系统使用系统字体绘制菜单、对话框控件和文本;

  SYSTEM_FIXED_FONT:固定间距(等宽)的系统字体,仅兼容16位Windows版本;

  DEFAULT_PALETTE:默认调色板,由系统调色板中的静态颜色组成。

  返回值:如果成功,返回值标识声明的逻辑对象;如果失败,返回值为空。

  c、CreateHatchBrush函数

  函数:这个函数可以用指定的阴影模式和颜色创建一个逻辑画笔。

  原型:hbrush createhatchbrush(int fn style,colorref clr ref);

  参数:

  FnStyle:指定画笔的阴影样式。该参数可以采用以下值,这些值的含义如下:

  HS_BDIAGONAL:表示从左到右向下45度阴影;

  HS_CROSS:水平和垂直交叉危险阴影;

  HS _ diagcross: 45度十字阴影;

  HS _ FDIAGONAL:向上45度,阴影从左向右;

  HS_HORIZONTAL:水平阴影;

  HS_VERTICAL:垂直阴影。

  Cirref:指定用于阴影的画笔的前景色。

  返回值:如果函数执行成功,返回值被标识为逻辑刷;如果函数失败,返回值为NULL。

  笔刷的选择和释放请参考笔刷。

  3.点设定像素

  函数:该函数将指定坐标处的像素设置为指定的颜色。

  原型:colorref setpixel (hdchdc,int x,int y,colorref Cr color);

  参数:

  Hdc:设备环境句柄。

  X:指定要设置的点的X轴坐标,用逻辑单位表示坐标。

  Y:指定要设置的点的Y轴坐标,用逻辑单位表示坐标。

  CrColor:指定用于绘制点的颜色。

  返回值:如果函数执行成功,返回值是该函数设置的像素的RGB颜色值。该值可能与crColor指定的颜色不同,这种情况有时会发生,因为找不到指定颜色的实际匹配;如果函数失败,那么返回值是C1。

  4.直线移动

  a、MoveToEx

  功能:将当前位置指定为特定点。

  prototype:bool move to ex(_ _ in hdc hdc,_ _ in int x,_ _ in int y,_ _ out lppoint lppoint)

  参数:

  Hdc:设备环境句柄。

  X:指定要设置的点的X轴坐标,用逻辑单位表示坐标。

  Y:指定要设置的点的Y轴坐标,用逻辑单位表示坐标。

  LpPoint:指向一个Point结构,用来接收前一个位置。当它为空时,不会返回当前位置。

  返回值:成功执行返回非零值,否则返回值为零。

  b、线至

  功能:从当前点到目标点画线。

  原型:BOOL LineTo( int x,int y)

  参数描述:

  x:目标点的横坐标。

  y:目标点的纵坐标。

  返回值:成功非零,其他返回零。

  5.长方形

  函数:这个函数绘制一个矩形,用当前画笔绘制它的轮廓,用当前画笔填充它。

  原型:Bool Rectangle (HDC HDC,IntnLeftRect,IntnToRect,IntnLightRect,IntnBottomRect);

  参数:

  Hdc:设备环境句柄。

  NLeftRect:指定矩形左上角的逻辑x坐标。

  NTopRect:指定矩形左上角的逻辑Y坐标。

  NRightRect:指定矩形右下角的逻辑X坐标。

  NBottomRect:指定矩形右下角的逻辑Y坐标。

  返回值:如果函数调用成功,返回值非零;否则,返回值为0。

  6.椭圆

  函数:这个函数绘制一个椭圆,用当前画笔绘制一个矩形轮廓,并用当前画笔填充它。

  原型:布尔椭圆(HDC HDC,Intx1,Inty1,Intx2,Inty2)

  参数:

  Hdc:设备环境句柄。

  X1:指定椭圆左上角的逻辑X坐标。

  Y1:指定椭圆左上角的逻辑Y坐标。

  X2:指定椭圆右下角的逻辑X坐标。

  Y2:指定椭圆右下角的逻辑Y坐标。

  返回值:如果函数调用成功,返回值非零;否则,返回值为0。

  7.其他(指MSDN)

  四。例子

  (参见代码)

  本文来自CSDN博客,转载请注明出处:http://blog . . net/eagle wood 2005/archive/2009/04/15/4076392 . aspx

vb gdi+绘图,winform gdi+画图