1

我一直在尝试在边框中绘制一个带间距的圆角矩形,但我似乎无法找到使用 Canvas.RoundRect 函数的方法,而且我自己绘制边缘的数学不太好,我可以绘制使用 Canvas.MoveTo 和 Canvas.LineTo 函数的带间距的矩形,但我不知道如何使边缘变圆。目前我正在做的是我在我想在边框中制作间距的地方制作黄色矩形,但问题是当我打印时我必须直接在打印机画布上绘制并且我必须在透明纸上绘制,所以背景颜色会导致问题。任何可以帮助我建立自定义绘图程序或告诉我如何擦除该区域并仍然在没有任何背景颜色的透明纸上打印的人。黄色背景色仅供预览,

查看图片以了解我所说的边界线间距是什么意思。

在此处输入图像描述

谢谢

4

2 回答 2

7

您可以通过操作当前设备上下文的剪辑区域来排除间隙。假设 L、R、T 和 B 是您的黄色矩形的坐标以形成间隙,请使用以下代码:

ExcludeClipRect(Canvas.Handle, L, T, R, B); // exclude the gap
Canvas.RoundRect(<whatever you already do here>);
SelectClipRgn(Canvas.Handle, 0); // reset the clipping region
于 2012-10-03T14:41:46.983 回答
4

您可以自己绘制部分圆角矩形。用于直线部分,MoveTo用于拐角。LineToArc

Arc函数绘制椭圆的一部分。函数的前两对坐标表示椭圆的边界。如果您希望矩形的角为圆形,则椭圆为圆形,并且X2 - X1等于Y2 - Y1。后两对坐标表示圆上的起点和终点;它们将与您传递到直线部分的点MoveTo相同LineTo。圆弧是逆时针绘制的。

于 2012-10-03T12:17:30.133 回答