CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

gdi+画图问题。

楼主cymandhxl(迷失中)2006-06-03 13:00:48 在 .NET技术 / VB.NET 提问

Declare   Auto   Function   GetDC   Lib   "user32"   (ByVal   hwnd   As   Integer)   As   IntPtr  
         
          Declare   Function   CreatePen   Lib   "gdi32"   Alias   "CreatePen"   (ByVal   nPenStyle   As   Integer,   ByVal   nWidth   As   Integer,   ByVal   crColor   As   Integer)   As   Integer  
          Declare   Function   GetROP2   Lib   "gdi32"   Alias   "GetROP2"   (ByVal   hdc   As   IntPtr)   As   Integer  
          Declare   Function   SetROP2   Lib   "gdi32"   Alias   "SetROP2"   (ByVal   hdc   As   IntPtr,   ByVal   nDrawMode   As   Long)   As   Integer  
          Declare   Function   SelectObject   Lib   "gdi32"   Alias   "SelectObject"   (ByVal   hdc   As   IntPtr,   ByVal   hObject   As   IntPtr)   As   Integer  
          Declare   Function   GetStockObject   Lib   "gdi32"   Alias   "GetStockObject"   (ByVal   nIndex   As   Integer)   As   IntPtr  
          Declare   Function   ReleaseDC   Lib   "user32"   Alias   "ReleaseDC"   (ByVal   hwnd   As   Integer,   ByVal   hdc   As   IntPtr)   As   IntPtr  
          Declare   Function   Rectangle   Lib   "gdi32"   Alias   "Rectangle"   (ByVal   hdc   As   IntPtr,   ByVal   X1   As   Long,   ByVal   Y1   As   Long,   ByVal   X2   As   Long,   ByVal   Y2   As   Long)   As   Long  
    Dim   slx   As   Single   =   -1  
          Dim   sly   As   Single   =   -1  
          Dim   slw   As   Single   =   -1  
          Dim   slh   As   Single   =   -1  
  Private   Sub   APIDraw()  
                  Dim   p   As   System.IntPtr   =   GetDC(0)   '取得屏幕  
                  Dim   oldrop2,   pen,   oldpen   As   Integer  
                  oldrop2   =   GetROP2(p)   '保存以前的画图方式  
                  SetROP2(p,   7)   '设置XOR画笔  
                  SelectObject(p,   GetStockObject(5))   '屏蔽画刷  
                  pen   =   CreatePen(2,   1,   System.Drawing.ColorTranslator.ToWin32(System.Drawing.Color.Black))   '新建画笔  
                  oldpen   =   SelectObject(p,   GetStockObject(pen))   '使用画笔  
                   
                  If   slx   >   -1   Then   '如果不是出始就第2次异或  
                          Rectangle(p,   slx,   sly,   slw,   slh)   '画矩形  
                                          End   If  
                  If   HasLayout   Then   ‘如果拖动  
                          slx   =   Me.Location.X   +   mx   -   lx   '保存本次矩形  
                          sly   =   Me.Location.Y   +   my   -   ly  
                          slw   =   Me.Location.X   +   mx   -   lx   +   Me.Width  
                          slh   =   Me.Location.Y   +   my   -   ly   +   Me.Height  
                           
                          Rectangle(p,   slx,   sly,   slw,   slh)   '画矩形  
                  Else    
                          slx   =   sly   =   slw   =   slh   =   -1   '还原  
                  End   If  
                  pen   =   SelectObject(p,   GetStockObject(oldpen))   '还原画笔  
                  SetROP2(p,   oldrop2)   '还原以前的画图方式  
                  ReleaseDC(0,   p)   '释放  
      End   Sub  
  我上面这段代码为什么画不出图形来啊。本来想实现窗体拖动,现在连图形的画不出来。  
  问题点数:20、回复次数:13Top

1 楼ilove8(千里|你去哪里了,我等了你很久了!)回复于 2006-06-03 13:20:17 得分 0

upTop

2 楼laviewpbt(人一定要靠自己)回复于 2006-06-03 14:01:33 得分 5

你这是gdiTop

3 楼VirtualDesktop(^_^)回复于 2006-06-03 14:26:01 得分 0

晕~你着是gdi啊  
  你为什么不用.NET内置的gdi+画图Top

4 楼cymandhxl(迷失中)回复于 2006-06-03 16:36:27 得分 0

gdi+能在窗体外画吗,能支持异或画笔吗Top

5 楼zhouhuaikun(怀空)回复于 2006-06-03 16:52:37 得分 5

gdi+不支持异或,  
  可以调用gdi的异或功能Top

6 楼liujiayu10(活着就好)回复于 2006-06-03 17:21:52 得分 0

不需要调API,直接用VB.net里的Drawing类就行Top

7 楼gezichong(鸽子虫)回复于 2006-06-03 21:27:03 得分 0

顶  
  .net   里有gdi+   可以直接画图  
  根本不用api  
  Top

8 楼gezichong(鸽子虫)回复于 2006-06-03 21:28:34 得分 0

如:画矩形  
  graphics.drawrectangle(0,0,24,65)  
  (0,0)为左上角的顶点;(24,65)为右下角的顶点  
   
  Top

9 楼cymandhxl(迷失中)回复于 2006-06-04 19:59:24 得分 0

大家为什么不帮我分析下代码呢.却讨论GDI和GDI+呢.我现在只是想实现我的功能,用什么都无所谓.Top

10 楼sx_lxh(路漫漫)回复于 2006-06-04 21:12:54 得分 0

程序不完整。Top

11 楼sx_lxh(路漫漫)回复于 2006-06-04 21:14:27 得分 10

试着把声明中的long   全改为integerTop

12 楼cymandhxl(迷失中)回复于 2006-06-05 08:29:47 得分 0

只有一个LONG啊。再说把IF去掉就应该放在哪里都可以了。Top

13 楼ybcsqq()回复于 2006-06-05 09:55:10 得分 0

graphics.drawrectangle(0,0,24,65)  
  (0,0)为左上角的顶点;(24,65)为右下角的顶点  
   
  (24,65)   是矩形的宽和高   好不好Top

相关问题

关键词

得分解答快速导航

  • 帖主:cymandhxl
  • laviewpbt
  • zhouhuaikun
  • sx_lxh

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo