我画的图怎么不显示?

16084279 2003-05-11 02:56:35
我在主窗体中new了一个位图,做如下操作,但是却没有我画的线,怎么回事呢?
必须要用Graphics::TBitmap来画,希望高手不吝指教.

Bitmap1=new Graphics::TBitmap;
Bitmap1->Width=300;
Bitmap1->Height=300;
Bitmap1->Canvas->Pen->Color=clRed;
Bitmap1->Canvas->MoveTo(100,100);
Bitmap1->Canvas->LineTo(200,200);
Invalidate();
...全文
65 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
c2y 2003-05-11
  • 打赏
  • 举报
回复
或者不加TImage控件,这样:
.h文件中加入
private: // User declarations
TImage *Image1;

void __fastcall TForm1::FormClick(TObject *Sender)
{
if(Image1==NULL) Image1=new TImage(Form1);
Image1->Parent=this;
Image1->Top = 10;
Image1->Left = 10;
Image1->Width=300;
Image1->Height=300;
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->MoveTo(100,100);
Image1->Canvas->LineTo(200,200);
}
c2y 2003-05-11
  • 打赏
  • 举报
回复
先在Form上加上TImage控件,然后
void __fastcall TForm1::FormClick(TObject *Sender)
{
Image1->Width=300;
Image1->Height=300;
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->MoveTo(100,100);
Image1->Canvas->LineTo(200,200);
}
qibo999 2003-05-11
  • 打赏
  • 举报
回复
正确做法:

TImage Image1=new TImage(Form1);
Image1->Parent=Form1;//*******************关键要加上!
Image1->Top = 1;
Image1->Left = 1;
Image1->Width=300;
Image1->Height=300;
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->MoveTo(100,100);
Image1->Canvas->LineTo(200,200);

记得 delete Image1啊!
16084279 2003-05-11
  • 打赏
  • 举报
回复
Image1=new TImage(this);
TImage创建成功了,但是图还是显不出来
16084279 2003-05-11
  • 打赏
  • 举报
回复
void __fastcall TForm1::FormClick(TObject *Sender)
{
Image1=new TImage(Form1);

Image1->Width=300;
Image1->Height=300;
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->MoveTo(100,100);
Image1->Canvas->LineTo(200,200);
}
还是不行
c2y 2003-05-11
  • 打赏
  • 举报
回复
Image1->Width=300;
Image1->Height=300;
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->MoveTo(100,100);
Image1->Canvas->LineTo(200,200);
c2y 2003-05-11
  • 打赏
  • 举报
回复
直接使用TImage控件就行了。
bluedodo 2003-05-11
  • 打赏
  • 举报
回复
必须用构造函数,试试
Bitmap1=new TImage(this);
16084279 2003-05-11
  • 打赏
  • 举报
回复
Image1=new TImage(Form1);
Bitmap1=new Graphics::TBitmap;
Bitmap1->Width=300;
Bitmap1->Height=300;
Bitmap1->Canvas->Pen->Color=clRed;
Bitmap1->Canvas->MoveTo(100,100);
Bitmap1->Canvas->LineTo(200,200);
Image1->Picture->Bitmap->Assign(Bitmap1);
Invalidate();
这样试了,还是不行
16084279 2003-05-11
  • 打赏
  • 举报
回复
但是我是写在控件中的,如何用代码生成一个TImage的实例呢?
头文件中:
TImage *Bitmap1;
cpp中:
Bitmap1=new TImage;

但是不行。说找不到一个TImage::TImage()的匹配。
TImage(Classes::TComponent* AOwner);这个东西,参数我又不知道是什么?
qibo999 2003-05-11
  • 打赏
  • 举报
回复
是啊,用
Image1->Picture->Bitmap->Assign(Bitmap1);
hdaq 2003-05-11
  • 打赏
  • 举报
回复
你的代码没有什么问题,Graphics::TBitmap本身并不会在窗体上显示,你得借助窗体的Canvas或TImage等控件来显示:

Graphics::TBitmap *Bitmap1=new Graphics::TBitmap();
Bitmap1->Width=300;
Bitmap1->Height=300;
Bitmap1->PixelFormat = pf24bit;
Bitmap1->Canvas->Pen->Color=clRed;
Bitmap1->Canvas->MoveTo(100,100);
Bitmap1->Canvas->LineTo(200,200);
Image1->Picture->Bitmap->Assign(Bitmap1);
delete Bitmap1;

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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