请问,JPG图像转到一IMAGE的picture里,为啥image.picture.bitmap无法canvas???(100分)

  • 主题发起人 主题发起人 pblove
  • 开始时间 开始时间
P

pblove

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,JPG图像转到一IMAGE的picture里,为啥image.picture.bitmap无法canvas???
另一问,24位的bitmap转为单色bitmap(大量转换),会随机中断,无法转完?
 
1.见:

unit Graphics;
......
function TPicture.GetBitmap: TBitmap;
begin
ForceType(TBitmap);
Result := TBitmap(Graphic);
end;

procedure TPicture.ForceType(GraphicType: TGraphicClass);
begin
if not (Graphic is GraphicType) then
begin
FGraphic.Free;
FGraphic := nil;
FGraphic := GraphicType.Create;
FGraphic.OnChange := Changed;
FGraphic.OnProgress := Progress;
Changed(Self);
end;
end;

image.picture.bitmap 时 FGraphic 被先 FREE 再 CREATE,已非原来的 FGraphic 了;
因此如果需要在IMAGE上再画东西,需要先自行转换成BITMAP再ASSIGN给IMAGE.PICTURE.BITMAP;

2.有什么提示?是资源不够?
 
谢谢你的回答,可能我说的不清楚.
1.我已把一24位的BITMAP图片转为JPG格式,并存起.
然后读入该JPG图片到一IMAGE的PICTUR里,想用该
IMAGE.PICTURE.BITMAP的画布
画线条,系统提示图像不是BITMAP格式.
tempJpg.loadFromFile('temp.jpg');
image1.picture.assign(tempJpg);
image.picture.bitmap.canvas.lineto(x,y) ,----此处提示 系统提示图像不是BITMAP格式

我试着用Tmemorystream转换,得到的BITMAP为空,WHY?
2. 24位的bitmap转为单色bitmap(大量转换),会随机中断,无法转完,系统无提示.
每次大约转换20%---30%.
 
1. 我是指你的 TJPEGIMAGE 在内存中要先转换成 TBITMAP,其实你的代码稍微改一下:
tempJpg.loadFromFile('temp.jpg');
>> image1.picture.assign(tempJpg); << 改为 image1.picture.bitmap.Assign(tempJpg);
image.picture.bitmap.canvas.lineto(x,y);

2. 没有提示?你是在IDE外运行的吗?看看代码吧。。。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部