如何在Panel上画图
Panel没有Canval属性,如何在它上面画图呢? 问题点数:20、回复次数:20Top
1 楼myy()回复于 2002-12-03 20:17:26 得分 1
1.放一个Image
2.
TControlCanvas ca=new TControlCanvas();
ca->Control=Panel1;Top
2 楼myy()回复于 2002-12-03 20:20:06 得分 1
TControlCanvas *ca=new TControlCanvas();
ca->Control=Panel1;
delete ca;Top
3 楼xpyilin(香蕉)回复于 2002-12-03 20:20:18 得分 1
在Panel上放个Image,Align设置为AlClient,然后在Image上画图。Top
4 楼xpyilin(香蕉)回复于 2002-12-03 20:21:12 得分 1
楼上好快啊!:)Top
5 楼zbc(修身养息,百战不怠)回复于 2002-12-03 20:22:07 得分 1
用下面的方法来做即可:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TImage *img = new TImage(Application);
img->Parent = Panel1;
img->Align = alClient;
img->Picture->LoadFromFile("c:\\贝壳800.bmp");
}
Top
6 楼myy()回复于 2002-12-03 20:22:44 得分 1
宽带啊,香蕉大哥!Top
7 楼tjzzx888(青草)回复于 2002-12-03 20:28:44 得分 0
可是Panel的Brush属性有什么用呢?Top
8 楼myy()回复于 2002-12-03 20:32:23 得分 1
TControlCanvas *ca=new TControlCanvas();
ca->Control=Panel1;
//画......
delete ca;
Panel的Brush与ca->Brush没有关系的。
BCB's Help的解释:
Determines the color and pattern used for painting the background of the control.Top
9 楼tjzzx888(青草)回复于 2002-12-03 20:36:31 得分 0
to : myy()
撇开上面的不说,Panel的brush属性有什么用?Top
10 楼tjzzx888(青草)回复于 2002-12-03 20:37:53 得分 0
或者说,我想用一个画刷填充panel,如何做到呢?Top
11 楼myy()回复于 2002-12-03 20:45:26 得分 1
TControlCanvas *ca=new TControlCanvas();
ca->Control=Panel1;
ca->Brush->Style=bsCross;
ca->FillRect(Panel1->ClientRect);
delete ca;
有很多种方法可以达到目的。
我觉得你不必去深究这其中的细节(其实我也不知道:-))。Top
12 楼tjzzx888(青草)回复于 2002-12-03 20:53:55 得分 0
to:: myy()
我按你说的方法做了,虽没有报错,但panel也没有反应。
我想要的是用一个小bmp图填充满整个panelTop
13 楼xpyilin(香蕉)回复于 2002-12-03 20:57:08 得分 1
Panel的Brush属性应该是有用的,下面的代码:
Panel1->Brush->Color = clRed;
Panel1->Brush->Bitmap->Canvas->FillRect(Rect(1,1,10,10));
可以编译通过,但是执行时显示错误,如果放到Form的OnCreate()事件中,可以看到Panel是被变成红的了(瞬间)。Top
14 楼xpyilin(香蕉)回复于 2002-12-03 21:05:44 得分 1
如果只是想填充Panel, zbc(代码研究ing) 的方法可以啊,或者用我的方法,然后:
Image1->Canvas->Brush->Color = clRed;
Image1->Canvas->FillRect(Rect(1,1,10,10));Top
15 楼myy()回复于 2002-12-03 21:11:04 得分 1
建议你还是简单点吧:放一个Image1在Panel中,设为alClient
Image2是一个小图片,256色的
^^^^^^^
Image1->Canvas->Brush->Bitmap=Image2->Picture->Bitmap;
Image1->Canvas->FillRect(Image1->ClientRect);
Top
16 楼myy()回复于 2002-12-03 21:13:32 得分 1
Image2是一个小图片,256色的可能不行,我用的是16色的,你试试!Top
17 楼tsk()回复于 2002-12-06 20:28:30 得分 1
帮你UPTop
18 楼xi8kuang(xikuang)回复于 2002-12-06 22:29:22 得分 1
HDC hdc = GetDC(Panel1->Handle);
::Ellipse(hdc, 0, 0, 50, 50);
ReleaseDC(Panel1->Handle, hdc);
用API直接用它的句柄画Top
19 楼tjzzx888(青草)回复于 2002-12-11 14:48:48 得分 0
我想要的是用一个小bmp图填充满整个panel,怎么办到呀
Top
20 楼myy()回复于 2002-12-11 15:00:13 得分 6
我Kao,下面的你试过了吗????
建议你还是简单点吧:放一个Image1在Panel中,设为alClient,没图片
Image2是一个小图片,16色的
^^^^^^^
Image1->Canvas->Brush->Bitmap=Image2->Picture->Bitmap;
Image1->Canvas->FillRect(Image1->ClientRect);Top




