我一直在尝试在边框中绘制一个带有间距的圆角矩形,但是我似乎无法使用Canvas.RoundRect函数找到一种方法来做到这一点,而且我自己在绘制边缘的数学方面不是很好我可以使用Canvas.MoveTo和Canvas.LineTo函数绘制一个带间距的矩形,但我不知道如何使边缘变圆。目前我正在做的是我在想要在边框中制作间距的地方制作黄色矩形,但问题是当我打印时我必须直接在打印机画布上绘图而我必须在透明纸上绘图,所以背景颜色会导致问题。任何可以帮我构建自定义绘图程序或告诉我如何擦除该区域并仍然在没有任何背景颜色的透明纸上打印的人。黄色背景颜色仅供预览,当我绘制到打印机画布时,背景是透明的。
通过边界线中的间距来查看图像以了解我的意思。
由于
答案 0 :(得分:6)
您可以通过操纵当前设备上下文的剪切区域来排除间隙。假设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
答案 1 :(得分:4)
您可以自己绘制部分圆角矩形。使用MoveTo
和LineTo
作为直线部分,并使用Arc
作为角落。
Arc
函数绘制椭圆的一部分。函数的前两对坐标表示椭圆的边界。如果您希望矩形的边角为圆形,则椭圆为圆形,X2 - X1
将等于Y2 - Y1
。后两对坐标表示圆上的起点和终点;对于直线部分,它们将传递给MoveTo
和LineTo
的相同点。电弧逆时针绘制。