请教一个TImage控件的问题

fall1979 2006-09-05 12:36:10
我在程序里动态的控制一个界面上现有image控件的大小,然后在上面画东西,现在遇到一个问题:第一次设置大小之后可以在上面画,但是第二次再设置大小之后好象画不上去了,下面是代码,哪位兄弟帮帮忙看一下,在线等!
第一次设置的代码:
imgResult->AutoSize=false;
imgResult->Width=128;
imgResult->Height=64;
imgResult->Canvas->Brush->Color=clBlack;
imgResult->Canvas->FillRect(Rect(0, 0, imgResult->Width, imgResult->Height));
第一次设置已经将image刷成黑色都没问题

第二次设置的代码:
imgResult->AutoSize=false;
imgResult->Width=128;
imgResult->Height=128;
imgResult->Canvas->Brush->Color=clBlack;
imgResult->Canvas->FillRect(Rect(0, 0, imgResult->Width, imgResult->Height));

第二次代码的目的是将原来64的高度扩展到128并将image刷成黑色,现在出现的问题好象大小设置了,但是没刷成黑色。请问这是怎么回事?
...全文
309 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueDeepOcean 2006-09-05
  • 打赏
  • 举报
回复
那就是我和你的理解不一样。
fall1979 2006-09-05
  • 打赏
  • 举报
回复
jjwwang((空园歌独酌,春日赋闲居)) ,正如你所说的从128变64这样从大变小是没问题的!看来保险的方法就是按照你所说的每次根据image的大小再设置一下bitmap的大小!问题已经解决,一会揭贴,谢谢!
fall1979 2006-09-05
  • 打赏
  • 举报
回复
jjwwang((空园歌独酌,春日赋闲居)) ,按照你的方法设置image大小的同时设置imgResult->Picture->Bitmap的大小已经可以了!谢谢!

BlueDeepOcean(蓝色·深海),你这个代码好象不能解决我问的问题吧?不过还是要说谢谢!
CACACACACA 2006-09-05
  • 打赏
  • 举报
回复
从128变为64就没有问题.
CACACACACA 2006-09-05
  • 打赏
  • 举报
回复
如果把这两行注释了.
imgResult.Picture.Bitmap.Width := 128;
imgResult.Picture.Bitmap.Height := 128;

那么先点BUTTON2,再点BUTTON1就不会出现楼主说的这种情况.

问题的原因是:

Image的Picture属性的问题.
如果直接用Image去加载一个JPG文件,也会报错.
例如:
procedure TForm1.BitBtn3Click(Sender: TObject);
var
dlg: TOpenDialog;
begin
dlg := TOpenDialog.Create(self); //请加载后缀是 .jpg的图像文件,
if dlg.Execute then
imgResult.Picture.LoadFromFile(dlg.FileName);
dlg.Free;
end;
BlueDeepOcean 2006-09-05
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

int OddOrEvent;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
OddOrEvent = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if (OddOrEvent % 2 == 0)
{
Image1->Width = 128;
Image1->Height = 128;
OddOrEvent ++;
}
else
{
Image1->Width = 105;
Image1->Height = 105;
OddOrEvent --;
}
Image1->Canvas->Brush->Color = clBlack;
Image1->Canvas->FillRect(Image1->ClientRect);
}
//---------------------------------------------------------------------------
CACACACACA 2006-09-05
  • 打赏
  • 举报
回复
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
imgResult.AutoSize:=false;
imgResult.Width:=128;
imgResult.Height:=64;
imgResult.Canvas.Brush.Color:=clBlack;
imgResult.Canvas.FillRect(Rect(0, 0, imgResult.Width, imgResult.Height));

end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin

imgResult.AutoSize:=false;
imgResult.Width:=128;
imgResult.Height:=128;
imgResult.Picture.Bitmap.Width := 128;
imgResult.Picture.Bitmap.Height := 128;
imgResult.Canvas.Brush.Color:=clBlack;
imgResult.Canvas.FillRect(Rect(0, 0, imgResult.Width, imgResult.Height));

end;

604

社区成员

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

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