delphi如何在桌面上或其它窗口上画图?

bvvbvbvbv 2008-11-24 07:14:29
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Brush.Style :=bsClear;//这里的实现方法用Delphi是最简单的了
Tag:=0; //使用Form的Tag属性作标志位

end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Tag:=1; //置位
Canvas.MoveTo(X,Y); //将Pen的位置移到当前
Canvas.Pen.Width := 8;
Canvas.Pen.Color :=clred;

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Tag=1 then
begin
Canvas.LineTo(x,y);//画线
end;


end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Tag:=0; //标志位
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=27 then
begin
form1.WindowState:=wsMinimized;
end;
end;
end.
这段代码是从网上找到的,它只能画在自己的窗体上,我想实现在桌面或其它窗口上涂鸦,请问怎么办?
最好能给出代码!
...全文
1492 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
xililu3 2012-03-02
  • 打赏
  • 举报
回复
发帖人和得分人明显一伙的,这人太坑爹了,应该封号
lcgboy 2008-12-29
  • 打赏
  • 举报
回复
oy,今天运气真好,上来就得了200
lcgboy 2008-12-29
  • 打赏
  • 举报
回复
大哥,赏点零花钱吧
ahjoe 2008-12-14
  • 打赏
  • 举报
回复
获取桌面或其它窗口的画布的句柄。用GetDC
xiaowei_001 2008-12-10
  • 打赏
  • 举报
回复
觉得可行的还是把窗体最大化,与此同时在里面设计,添加你想要的窗体
yinxd6112 2008-12-07
  • 打赏
  • 举报
回复
学习,帮顶 :-D
bvvbvbvbv 2008-12-06
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 fhb 的回复:]
我们有个产品 FreeDesktop
http://www.codeidea.com/cn/
[/Quote]

下载试用了一下,和普通的屏幕涂鸦软件一样
只不过多了一个切换的选择.
我要的效果是:可以在当前任意的窗口上写字,涂鸦.当窗口切换时,写的字可以刷新掉.但必须是写字的同时可以操作被写字的窗口.
就是说,在桌面上移动写字,当双击桌面我的电脑图标时,我的电脑也要能打开.当然,此时可能在我的电脑画上一个点,这都没关系.

说白了,就是在任意窗口上写字,但同时可以操作任意窗口.我觉得只有这样,才能叫做屏幕教鞭吧.
fhb 2008-12-06
  • 打赏
  • 举报
回复
我们有个产品 FreeDesktop
http://www.codeidea.com/cn/
bvvbvbvbv 2008-12-06
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 dandycheung 的回复:]
你要想在别的窗口上写字,很显然,需要进入一种写字模式,要不然鼠标点下然后拖动的时候,系统怎么区分是该写字呢,还是该执行一个拖放图标的操作?

你非要在别的窗口上作图,并不是不可以,但是你想过吗,人家窗口原本的正常刷新,会把你的绘制覆盖掉的。一般的处理方式,都是创建一个自己的窗口,在这个窗口上作图。不过这个窗口可以特殊处理一下,比如可以先把下面的图像截取下来做他的背景,或者在窗口透明上下点功夫。 …
[/Quote]

能不能帮我实现一下?
sodz 2008-12-06
  • 打赏
  • 举报
回复
就是图片绘好了,也会被目标窗口的OnPaint抹除的
zhangxiaommmm 2008-12-05
  • 打赏
  • 举报
回复
up
cgjxcq 2008-12-05
  • 打赏
  • 举报
回复
求分!帮顶!
twals 2008-12-05
  • 打赏
  • 举报
回复
不懂,帮顶
android2008 2008-12-05
  • 打赏
  • 举报
回复
不懂,帮顶
dandycheung 2008-12-05
  • 打赏
  • 举报
回复
你要想在别的窗口上写字,很显然,需要进入一种写字模式,要不然鼠标点下然后拖动的时候,系统怎么区分是该写字呢,还是该执行一个拖放图标的操作?

你非要在别的窗口上作图,并不是不可以,但是你想过吗,人家窗口原本的正常刷新,会把你的绘制覆盖掉的。一般的处理方式,都是创建一个自己的窗口,在这个窗口上作图。不过这个窗口可以特殊处理一下,比如可以先把下面的图像截取下来做他的背景,或者在窗口透明上下点功夫。

好像原来一个叫做绘视小灵鼠的软件有类似的行为,我也做过研究,可惜得很,我最近硬盘全毁,代码没了。希望对你有帮助。
bvvbvbvbv 2008-12-03
  • 打赏
  • 举报
回复
主要是求代码而来
suton 2008-11-27
  • 打赏
  • 举报
回复
打开IE,那就再拷一次屏幕图片.
willflyz 2008-11-27
  • 打赏
  • 举报
回复
学习!
twals 2008-11-27
  • 打赏
  • 举报
回复
mark
android2008 2008-11-27
  • 打赏
  • 举报
回复
mark
加载更多回复(25)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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