没有Canvas的控件上如何画图写字? 想在Shape、SpeedButton上标写号码,用Canvas->TextOutA()写,但是它们没有Canvas,可以New一个吗?不要告诉我在Shape、SpeedButton上加Label,因为加了以后有其他麻烦. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TCanvas *c; Graphics::TBitmap *BMP=new Graphics::TBitmap; BMP->LoadFromFile("F:\\My Pictures\\112.bmp"); c = new TControlCanvas(); ( (TControlCanvas *)c )->Control=Panel1; c->Brush->Style=bsClear; c->Pen->Color=clBlue; c->Rectangle(5,5,15,15); c->Draw(0,0,BMP); delete c; delete BMP;参考这个 用GetDC函数取上下文的DC句柄,用api函数画图或者就重载它的erasebkgnd函数,收到此消息时lparam就是dc句柄的值,用它来画图就行了 var c:TControlCanvas;begin c:=TControlCanvas.Create; try c.Control:=Shape1; c.TextOut(5,5,'Test'); finally c.Free; end;end; Shape没有OnPaint事件,一动画上去的字就没了!! 试试alexanda2000(Delphi2005,好用 ^_^)的,动态建立一个。 或者你从TShape继承一个类: TMyShape = class(TShape) public Str:String; //要显示的文字 procedure MyPaint(var Msg:TMessage);Message WM_PAINT; end;然后修改相应代码:var Form1: TForm1; MyShape:TMyShape;implementation{$R *.dfm}procedure TMyShape.MyPaint(var Msg:TMessage);begin inherited; Canvas.TextOut(5,5,Str);end;procedure TForm1.FormCreate(Sender: TObject);begin MyShape:=TMyShape.Create(Self); with MyShape do begin Parent:=self; top:=10; left:=10; Width:=100; Height:=50; Str:='Test'; //你要显示的文字 end;end;procedure TForm1.FormDestroy(Sender: TObject);begin MyShape.Free;end; TCHART 显示条柱值与显示总和值 delphi case语句似乎不能够使用break跳出?快速赋值二维数组 delphi 怎么能以逗号为准把字符串拆分? 数据查询问题 如何把PopupMenu弹出来放在一个ToolButton的上面啊? 求GPRS或者MODEM的拨号程序,功能如下。。。 你一定做过,请叫一下! 100分求思路 除delphi自带的做安装盘的工具外,还有哪些其它的方式? 请问kbmtable最新版本的密码? 我好苯啊,竟然查不出错误 怎么用delphix来设置背景啊
Graphics::TBitmap *BMP=new Graphics::TBitmap;
BMP->LoadFromFile("F:\\My Pictures\\112.bmp");
c = new TControlCanvas();
( (TControlCanvas *)c )->Control=Panel1;
c->Brush->Style=bsClear;
c->Pen->Color=clBlue;
c->Rectangle(5,5,15,15);
c->Draw(0,0,BMP);
delete c;
delete BMP;
参考这个
或者就重载它的erasebkgnd函数,收到此消息时lparam就是dc句柄的值,用它来画图就行了
c:TControlCanvas;
begin
c:=TControlCanvas.Create;
try
c.Control:=Shape1;
c.TextOut(5,5,'Test');
finally
c.Free;
end;
end;
public
Str:String; //要显示的文字
procedure MyPaint(var Msg:TMessage);Message WM_PAINT;
end;然后修改相应代码:var
Form1: TForm1;
MyShape:TMyShape;implementation{$R *.dfm}procedure TMyShape.MyPaint(var Msg:TMessage);
begin
inherited;
Canvas.TextOut(5,5,Str);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
MyShape:=TMyShape.Create(Self);
with MyShape do
begin
Parent:=self;
top:=10;
left:=10;
Width:=100;
Height:=50;
Str:='Test'; //你要显示的文字
end;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
MyShape.Free;
end;