我想画一个角交叉与此代码画布:
InFlateRect(r, -1, -1);
Canvas.Brush.Color := clYellow;
Canvas.Brush.Style := bsFDiagonal;
Canvas.Pen.Color := clRed;
//Pen.Style := psClear;
Canvas.Rectangle(r);
但结果却是一个黑盒子。
如果我删除了风格多变,正常的固体黄色区域我。
为什么是黑色的矩形与此代码?
感谢您的每一个建议
对不起,失踪的信息,我扩展它:这个程序是使用TMetaFileCanvas绘制。 在正常的形式I可得出任何画笔样式,像T形...
procedure TForm4.FormPaint(Sender: TObject);
var
R: TRect;
begin
R := ClientRect;
InflateRect(R, -10, -10);
Canvas.Brush.Color := clYellow;
Canvas.Brush.Style := bsFDiagonal;
Canvas.Pen.Color := clRed;
Canvas.Rectangle(R);
end;
产生的结果
(不要忘了Invalidate
形式的OnResize
)。
请注意,该地区充满对角线黄线。 这的确是什么bsFDiagonal
画笔样式一样。
从你的问题的措辞(“我要画一个角交叉[...]”),我怀疑你真正想要别的东西,即矩形内一个大十字。 这个你不能达到使用标准的画笔在所有。 相反,你必须手工绘制它:
procedure TForm4.FormPaint(Sender: TObject);
var
R: TRect;
begin
R := ClientRect;
InflateRect(R, -10, -10);
Canvas.Brush.Color := clWhite;
Canvas.Brush.Style := bsSolid;
Canvas.Pen.Color := clRed;
Canvas.Rectangle(R);
Canvas.MoveTo(10, 10);
Canvas.LineTo(R.Right, R.Bottom);
Canvas.MoveTo(10, R.Bottom);
Canvas.LineTo(R.Right, 10);
end;