DELPHI第四天,求助大佬,画图工具的问题

Delphi萌新 2023-01-11 20:41:44

我想做一个工具,可以在屏幕上自由的画线条的,当我点击按钮之后,鼠标经过的位置就会有线条出现

目前做法如下
New Form

VAR
DC:HDC;   //gdi句柄
zuobiao:Tpoint; //坐标变量
huatu:boolean=false //画图变量判断
app:Tcanvas; //画布变量

窗体TForm1.FormCreate事件触发

dc=getdc(0) //获取屏幕句柄
app:=canvas.Create; //创建一个Canvas对象
app.Handle:=DC; //将屏幕和画布关联
Getcursorpos(Zuobiao); //获取当前屏幕坐标位置

鼠标OnMouseDown事件触发

 app.MoveTo(zuobiao.X,zuobiao.Y);//画布的坐标移动到我屏幕坐标位置
 if button =mbleft then begin    //判断按键左右
     app.Pen.Color:=clred;    //画笔颜色设置为红色
     app.Pen.Width:=3;        //画笔宽度为3
     huatu:=true;             //画图变量为真
 end
 else
    begin
  huatu:=false;              //画图变量为假
    end;
end;

OnMouseMove事件触发

  if huatu then begin
   app.lineto(zuobiao.x,zuobiao.y);  //将我鼠标经过的画出线条
end;

但是现在问题是,打开Form就报错,另外就是不在屏幕上画线
已经折腾了五个小时了,请大佬帮帮忙,小弟在线等答案!
不知道问题出在哪里了!!!

...全文
113 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanqth 2023-01-13
  • 打赏
  • 举报
回复

打开Form报什么错呢?
其实,通常就是取到鼠标经过的点,然后就画就可以的。

  • 打赏
  • 举报
回复

窗体设置为全屏、无边框,AlphaBlend设置为true,AlphaBlendValue设置为一个比较小的值,比如16,然后在鼠标事件中画就可以了。
你的做法是不行的,虽然直接绘制到桌面是可以的,但是交互操作则不行,因为你获得不到桌面窗口的键盘、鼠标消息(hook是可以的,但是比较繁琐,没有必要)。

CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-Java 发布问题, 以便更快地解决您的疑问
tanqth 2023-01-13
  • 举报
回复
@CSDN-Ada助手 这是来捣乱的?

5,714

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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