【发布时间】:2019-09-01 09:54:21
【问题描述】:
此代码应该调整TBitmap 的大小,但生成的位图只是一个白色图像(具有最终大小)。我正在使用它来调整大小。
function ResizeBitmap(B: TBitmap; Width, Height: Integer): TBitmap;
var
finalbitmap: TBitmap;
begin
finalbitmap := TBitmap.Create(Width, Height);
finalbitmap.Clear(0);
if finalbitmap.Canvas.BeginScene then
try
finalbitmap.Canvas.DrawBitmap(B, RectF(0,0,B.Width,B.Height), RectF(0,0,Width,Height), 1);
finally
finalbitmap.Canvas.EndScene;
end;
Result := finalbitmap;
end;
知道发生了什么吗?
【问题讨论】:
-
Clear()仍然是一个绘图操作,因此它应该在(Begin|End)Scene()之间调用。不过,这并不重要,因为DrawBitmap()只会绘制所有Clear()会绘制的东西,所以根本不需要调用Clear(),除非B具有透明度并且你想要@ 987654329@也有透明度。但是,您是否确认BeginScene()在您的情况下没有返回 False? -
是的,我已经验证过了。该过程进入 if 所以 BeginScene 返回 True。
-
在我做的一个简单测试中,我无法重现该问题。还请显示调用
ResizeBitmap()的代码 -
我看到了你之前添加的代码,我自己复制了下来,以便以后测试。现在我看到您已经删除了带有代码的注释。这是否意味着您自己找到了解决方案?如果是这样,如果 q/a 对其他读者有益,那么正确的做法是回答您自己的问题。另一方面,如果问题是愚蠢的错误或错误,那么正确的做法是也删除问题。如果您无法删除(由于声誉不足),请告诉我们,这里有人可以关闭它。 (顺便说一句,图像类型不兼容的原因是什么,png v. bmp?)
-
没有,但是我遇到了另一个问题,我认为它与此有关...所以我想在浪费您的时间之前尝试一下...但没有解决...
标签: delphi firemonkey delphi-10.3-rio tbitmap