任何人都可以共享一个示例代码在delphi画布中画一个非矩形部分的图片吗?在delphi画布中画一个非矩形部分的图片
回答
您正在寻找GDI路径。开始here,它解释了在这种情况下的路径,并在左侧提供了链接来解释可用的功能。
谷歌可以举出很多在Delphi中使用路径的例子。如果你找不到它们,请在这里发表评论,我会看到我能为你提供什么。
Canvas.Ellipse(0, 0, 10, 20); // not a rectangle
我们怎样才能以任何形状剪切图片,你没有回答这个问题的任何部分 – Maysam 2010-07-22 01:36:54
你的问题很模糊。但我怀疑你正在寻找的是裁剪区域。阅读它们。将目标设备上的剪切区域设置为所需的形状,然后将图像绘制到设备上。只有在裁剪区域内的图像部分才会被绘制。
如何在delphi中做到这一点? – Maysam 2010-07-22 01:35:50
阅读Windows GDI的区域和剪切函数,例如CreatePolygonRGN()和SelectClipRgn()。在线使用区域剪辑输出应该有充足的例子。它非常简单 - 您在目标DC上定义一个要限制绘制的区域,执行绘图(图像,线条等),然后将裁剪区域重置为正常。以下是MSDN库中的一个简单示例:http://msdn.microsoft.com/zh-cn/library/dd183437(v=VS.85).aspx – GrandmasterB 2010-07-22 19:33:52
我使用所谓的运行列表为此功能(广义形状和blitting它们)。我也看到他们也叫warplists。通过将形状定义为一组水平线来将形状编码为运行列表,并且每行是两个整数值(跳过n个像素,复制n个像素)。
这意味着您可以绘制整条线,只留下“高度”绘制操作。因此,定义了一个矩形(第一个从顶级角到左角(“xorg”,“yorg”)的“跳过”像素,该矩形为width_rect宽,width_pixels为更进一步的线,width_pixels可以宽于宽度图片(排列字节)
(yorg*width_pixels+xorg , width_rect),
(width_pixels-width_rect , width_rect),
(width_pixels-width_rect , width_rect),
(width_pixels-width_rect , width_rect),
..
..
这种方式可以让你的描绘过程相当通用的,简单的,规则形状(rects,圆圈)只需要轻微的数学预先计算这些列表。它简化了我的形状处理很大
但是我直接绘制位图,而不是画布,所以我无法帮助那部分。有效地绘制一行的原语以及从图形中提取一行的方法应该就足够了。
- 1. Android画布 - 绘制矩形或矩形的图片
- 2. 画布矩形图像
- 3. 图片动画:从一个圆形到一个矩形。 (with corner.js)
- 4. 在矩形外部填充画布
- 5. 如何在xaml中部分填充画布内的矩形
- 6. Opencv在图片中画一个矩形从来没有显示
- 7. 围绕画布移动一个矩形
- 8. 在画布上画图片
- 9. 在画布上点击点画一个矩形wpf
- 10. 画布上的动画矩形
- 11. Fabricjs将画布的一部分复制到另一个画布
- 12. 画布像矩形轮旋转矩形
- 13. 用SpriteKit在矩形中画一个洞?
- 14. javascript mouseover矩形画布
- 15. 绘制矩形画布android
- 16. 绘制画布3d矩形
- 17. Android画布绘制矩形
- 18. 移动矩形画布内
- 19. 画布和绘画图片
- 20. 在画布中翻译矩形
- 21. 在T形图表中同一画布上的多个图形
- 22. HTML画布 - 在一个循环中绘制多个矩形
- 23. 画布条形图动画
- 24. 画布:清除矩形但保留内容的其余部分
- 25. 画布部分不能画部分
- 26. 在画布上画上一部分的画面
- 27. 如何在矩形的底部svg中画一个圆角JS
- 28. 如何用一个移动的三角形/矩形创建画布动画?
- 29. 画布中的矩形尺寸错误
- 30. 画布中的比例矩形
也许Mghie在这里的答案有帮助吗? http://stackoverflow.com/questions/1728141/tbitmap-drawing-transparent-image-in-delphi-2009 – 2010-07-21 20:21:01
实际上并不相关 – Maysam 2010-07-22 03:04:57