作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将图像大小调整为预定义的 64 * 64 位图,无论其当前尺寸和纵横比如何。我尝试了 Bitmap.ReSize 但保持了纵横比。我尝试了 TImage
并将 WrapMode
设置为 iwStretch
。这在一定程度上有效,因为它确实根据我的需要重新缩放了图像,但我找不到从 TImage
中获取该图像的方法。 TImage
的 Bitmap
属性仍然包含原始位图。
有人知道如何从屏幕上显示的 TImage
中获取图像吗?或者甚至更好:向我指出一个可以进行这种调整大小和拉伸(stretch)的函数?如果有的话,我已经错过了。
感谢您的宝贵时间。
最佳答案
要在 Fmx
中拉伸(stretch)图像,您不需要使用 TImage
。我知道您并不是真的想使用 TImage
,解决方案如下:
var
bmpA, bmpB: TBitmap;
src, trg: TRectF;
begin
bmpA := nil;
bmpB := nil;
try
bmpA := TBitmap.Create;
bmpA.LoadFromFile('C:\tmp\Imgs\149265645.jpg');
bmpB:= TBitmap.Create;
bmpB.SetSize(64, 64);
src := RectF(0, 0, bmpA.Width, bmpA.Height);
trg := RectF(0, 0, 64, 64);
bmpB.Canvas.BeginScene;
bmpB.Canvas.DrawBitmap(bmpA, src, trg, 1);
bmpB.Canvas.EndScene;
bmpB.SaveToFile('C:\tmp\Imgs\149265645_take_two.bmp');
finally
bmpA.Free;
bmpB.Free;
end;
end;
您让bmpB.Canvas
绘制bmpA
位图,并根据src
和trg<同时调整图像大小
矩形。
关于image - 如何在Firemonkey中拉伸(stretch)图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46398851/
我是一名优秀的程序员,十分优秀!