vb.net如何在屏幕上画图,就像手写板那样

wangearn 2007-01-23 04:14:39
vb.net如何在屏幕上画图,就像手写板那样
...全文
765 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
uteflyaway 2007-01-24
  • 打赏
  • 举报
回复
标注一下,学习
北京的雾霾天 2007-01-24
  • 打赏
  • 举报
回复
我是在XP下的VS2005中运行通过的.
wangearn 2007-01-24
  • 打赏
  • 举报
回复
是我的问题,已经成功了 ,谢谢
wangearn 2007-01-23
  • 打赏
  • 举报
回复
Dim deskDC As Integer = GetDCEx(desk, IntPtr.Zero, &H403)
这句提示错误:
对 PInvoke 函数“桌面留言板!桌面留言板.Form1::GetDCEx”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
北京的雾霾天 2007-01-23
  • 打赏
  • 举报
回复
对应的VB的代码如下:

Public Declare Function GetDesktopWindow Lib "user32" Alias "GetDesktopWindow" () As IntPtr
Public Declare Function GetDCEx Lib "user32" Alias "GetDCEx" (ByVal hwnd As IntPtr, ByVal hrgnclip As IntPtr, ByVal fdwOptions As Integer) As IntPtr

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim desk As Integer = GetDesktopWindow()
Dim deskDC As Integer = GetDCEx(desk, IntPtr.Zero, &H403)
Dim g As Graphics = Graphics.FromHdc(deskDC)
g.FillEllipse(SystemBrushes.ControlText, 0, 0, 100, 100)
g.Dispose()
End Sub
snowfox007 2007-01-23
  • 打赏
  • 举报
回复
VB.Net版本

Public Declare Function GetDesktopWindow Lib "user32" Alias "GetDesktopWindow" () As Integer

Public Declare Function GetDCEx Lib "user32" Alias "GetDCEx" (ByVal hwnd As Integer, ByVal hrgnclip As Integer, ByVal fdwOptions As Integer) As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim desk As Integer = GetDesktopWindow()

Dim deskDC As Integer = GetDCEx(desk, IntPtr.Zero, 1027)

Dim g As Graphics = Graphics.FromHdc(deskDC)

g.FillEllipse(SystemBrushes.ControlText, 0, 0, 100, 100)

g.Dispose()

End Sub

wangearn 2007-01-23
  • 打赏
  • 举报
回复
还是没弄出来,麻烦你翻译成vb的语言嘛
北京的雾霾天 2007-01-23
  • 打赏
  • 举报
回复
这个好说,参考下下面的代码:
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll", EntryPoint = "GetDCEx", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern IntPtr GetDCEx(IntPtr hWnd, IntPtr hrgnClip, int flags);

private void button1_Click(object sender, EventArgs e)
{
IntPtr desk = GetDesktopWindow();
IntPtr deskDC = GetDCEx(desk, IntPtr.Zero, 0x403);
Graphics g = Graphics.FromHdc(deskDC);
g.FillEllipse(SystemBrushes.ControlText, 0, 0, 100, 100);
}
wangearn 2007-01-23
  • 打赏
  • 举报
回复
能不能给出具体代码,小弟很菜的
北京的雾霾天 2007-01-23
  • 打赏
  • 举报
回复
那首先要用GetDesktopWindow来得到桌面的画图句柄.
然后由桌面的窗口句柄建立一个Graphics,这样就可以画图了.

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧