各位,如何将Tlistbox显示到tbitmap.canvas上???

whfsdh 2000-03-04 10:04:00
这段代码不行
listbox1.perform(WM_PATIN, bitmap.canvas, 0)
...全文
150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AcherMagic 2000-03-04
  • 打赏
  • 举报
回复
WM_PAINT是发给窗口的消息
Bitmap是TBitmap类型
向Bitmap发这种消息是没有用的
929 2000-03-04
  • 打赏
  • 举报
回复
不知你为什么想在BITMAP上显示LISTBOX,LISTBOX是一个控件,它实际上是一个子窗口。放在窗口上才是有作用的。
把LISTBOX图象复制到BITMAP上,可以把它画出来。但是,画出来LISTBOX并不能起到LISTBOX的作用。
我用IMAGE当做一个图片复制了一下。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Image1: TImage;
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

begin
image1.Canvas.CopyRect(image1.ClientRect,listbox1.Canvas,listbox1.ClientRect );
end;

end.
whfsdh 2000-03-04
  • 打赏
  • 举报
回复
谢谢各位,这个问题我自己解决了.
hubdog 2000-03-04
  • 打赏
  • 举报
回复
easy,用tlistbox.paintto方法就可以了.
kxy 2000-03-04
  • 打赏
  • 举报
回复
我看不如这样,
运行时动态创建控件,干吗要自己画:)
如果运行时要移动,改变一个控件的大小,DDHCode有一个控件可以实现
如果要同时移动多个控件的话:(麻烦,DreamControl控件包可以实现
可以做的和delphi的IDE很象.
AcherMagic 2000-03-04
  • 打赏
  • 举报
回复
先画一个边框
procedure TForm1.Button1Click(Sender: TObject);
var
Rect : TRect;
begin
Image1.Canvas.Pen.Width := 1;
Image1.Canvas.Pen.Color := clBlack;
Image1.Canvas.Rectangle(Image1.ClientRect);
Rect.Left := ListBox1.ClientRect.Left+1;
Rect.Right := ListBox1.ClientRect.Right-1;
Rect.Top := ListBox1.ClientRect.Top+1;
Rect.Bottom := ListBox1.ClientRect.Bottom-1;
Image1.Canvas.CopyRect(Rect,ListBox1.Canvas,ListBox1.ClientRect);
end;
whfsdh 2000-03-04
  • 打赏
  • 举报
回复
我的意思是将listbox(可以是任意的TWinControl)的外观画到canvas上,我想做一个Form Designer,您的代码没有边框,您看看,还有没有别的方法。

5,379

社区成员

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

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