我在带有256x256位图的TImage上使用Stretched = True。这会被缩小1,2,4或8倍。正如所料,离开'1'后,位图上的文字变得更可怕。 我注意到,虽然Windows 7资源管理器呈现了一个缩小版本的位图“更柔和”,更令人愉快。这样可以“模糊”TBitmap吗?是否可以在Delphi中平滑缩放的TBitmap?
回答
我想你的意思是在TImage上Stretched = True,而不是在TBitmap上。
不幸的是TImage没有内置重新采样器,当涉及到调整其中的图像。 我的建议是使用Graphics32,因为它支持多种重新采样的(有些是增加大小他人减少尺寸更好)
通过使用半色调StretchBltMode,你会得到比正常stretchdraw平滑的结果。 这将只适用于Windows 2000及更高版本
procedure SmoothResize();
var pt:TPoint;
h: HDC;
begin
h := imgMainPicture.Canvas.Handle;
// Previous call to StretchDraw
// imgMainPicture.Canvas.StretchDraw(Rect(0, 0, imgMainPicture.Width - 1,
// imgMainPicture.Height - 1), curPicture.AnnotatedBitmap);
// Normal StretchDraw uses STRETCH_DELETESCANS as StretchBltMode , HALFTONE should give better results
GetBrushOrgEx(h, pt);
SetStretchBltMode(h, HALFTONE);
SetBrushOrgEx(h, pt.x, pt.y, @pt);
StretchBlt(h, 0, 0, imgMainPicture.Width - 1,
imgMainPicture.Height - 1, curPicture.AnnotatedBitmap.Canvas.Handle,
0, 0, curPicture.Width,curPicture.Height,SRCCOPY);
end;
很好的建议,谢谢。 – 2010-05-10 15:49:38
@BrianFrost HALFTONE或STRETCH_HALFTONE是你最好的选择,恕我直言,这是一些代码http://code.google.com/p/delphigeist-delphi-stuff/source/browse/trunk/SynMiniMap/src/SynMiniMap.pas – ComputerSaysNo 2012-09-17 17:24:55
- 1. delphi TBitmap是否支持alpha通道
- 2. 是否可以使字体可缩放?
- 3. 图像缩放和平滑
- 4. 我可以禁用Safari的平滑图像缩放吗?
- 5. 是否可以使用php或js平移/缩放相机?
- 6. OL3中的分数缩放(平滑缩放)
- 7. 如何在图像库中平滑过渡以缩放图像?
- 8. Android:是否可以缩放xml drawable?
- 9. D3:是否可以缩放+平移一个轴,只平移另一个轴?
- 10. 是否可以在Xcode6中模拟iphone6 +的缩放模式?
- 11. 是否可以在pyqt4中缩放QVBoxLayout的内容?
- 12. 是否可以在德尔福平滑按钮的角落
- 13. 的Flash CS5,使图像平滑缩放
- 14. Highcharts失去平滑的缩放效果
- 15. SpriteKit。是否可以在不缩放childNode的情况下缩放parentNode?
- 16. Xcode故事板不可见;是否可以缩放/平移画布?
- 17. 是否可以把按钮放在WPF滑块的拇指?
- 18. Apache Jena可以水平缩放吗?
- 19. 在Delphi的TBitmap组件中可以使用便携式位图图像吗?
- 20. 是否可以在textview中缩放drawableleft&drawableright?
- 21. 是否有任何平移工具可用于highcharts的缩放
- 22. 用画布缩放大图像。平滑
- 23. 使用SDL平滑缩放大图像
- 24. 平滑缩放移动div元素
- 25. WP7:如何平滑缩放图像?
- 26. UIScrollView可以适应水平缩放而不是垂直缩放吗? (如何)
- 27. ETS平滑模型是否可以在R中预测一年以上?
- 28. 是否可以“缩放”WPF RichTextBox中的文本?
- 29. 缩放/平移Google地图时是否可以过滤列表/表格?
- 30. 是否有任何RDBMS可以自动缩放,分片,重新平衡?
谢谢,更正了文字。好的建议重新Graphics32。 – 2010-05-07 13:12:35