我想在panel中直接画图。(20分)

  • 主题发起人 主题发起人 hhsj
  • 开始时间 开始时间
H

hhsj

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在panel中直接画图。请问需要什么步骤?
panel没有画板属性,我不知道怎么在panel中直接画上在iamgelist中的图像,用image的话
底色不能保持panel的颜色,变成白色了!

是否可以加个画板属性呢?如果加的话需要做什么呢?
 
你设BRUSH为PANEL的底色就可以了
 
var

c:TCanvas;

begin

c:=TControlCanvas.Create;

TControlCanvas(c).Control:=Panel1;

c.Brush.Style:=bsClear;

c.Pen.Color:=clBlue;

c.Rectangle(5,5,15,15);

c.Free;

end;

 
很巧,我正在做一个项目,也是要用到你说的情况,在panel上作图:本人编写了一个简单的TDrawPanel控件:
源代码如下:
unit DrawPanel;

interface

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

type
TDrawPanel = class(TPanel)
private
fPaint:TNotifyEvent;
{ Private declarations }
protected
procedure Paint;override;
{ Protected declarations }
public
property canvas;
{ Public declarations }
published
property OnPaint:TNotifyEvent read fPaint write fPaint;
{ Published declarations }
end;

procedure Register;

implementation
procedure TDrawPanel.Paint;
begin
inherited;
if Assigned(fPaint) then
fPaint(self);
end;

procedure Register;
begin
RegisterComponents('MyComponent', [TDrawPanel]);
end;

end.
自己把注册就行了,然后就像使用Panel一样使用他,他比panel多了一个Canvas,和OnPaint事件!
 
还有一个方法:
var
dc: HDC;
....
dc := GetDC(Panel1.Handle);
// 你的绘图操作
ReleaseDc(Panel2.Handle, dc);


另外,用 Image 的话,你可以设它的 TransParent := true;
 
多人接受答案了。
 

Similar threads

后退
顶部