Delphi 对角线画笔风格给我黑色区域
我想用以下代码在画布上画一个对角叉:Delphi 对角线画笔风格给我黑色区域,delphi,canvas,styles,brush,Delphi,Canvas,Styles,Brush,我想用以下代码在画布上画一个对角叉: InFlateRect(r, -1, -1); Canvas.Brush.Color := clYellow; Canvas.Brush.Style := bsFDiagonal; Canvas.Pen.Color := clRed; //Pen.Style := psClear; Canvas.Rectangle(r); 但结果是一个黑匣子 如果我删除样式更改,我会得到一个正常的纯黄色区域 为什么矩形用这个代码是黑色的 谢谢你的建议 很抱歉,信息丢失,
InFlateRect(r, -1, -1);
Canvas.Brush.Color := clYellow;
Canvas.Brush.Style := bsFDiagonal;
Canvas.Pen.Color := clRed;
//Pen.Style := psClear;
Canvas.Rectangle(r);
但结果是一个黑匣子
如果我删除样式更改,我会得到一个正常的纯黄色区域
为什么矩形用这个代码是黑色的
谢谢你的建议
很抱歉,信息丢失,我将其扩展为: 此过程使用TMetaFileCanvas进行绘制。在正常的形式,我可以画任何画笔风格,如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;
产生结果
(不要忘记在表单的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;
您的代码在浅灰色背景(form.color)上生成红色边框和黄色斜线(delphi 7,win xp)什么是brush.width或pen.width或类似的东西?哎呀,我搞砸了TPen.style您在画什么设备?并非所有设备都支持所有画笔或笔样式。设备的另一个问题是:阴影画笔图案始终使用设备坐标,而不是逻辑,因此小像素设备(例如打印机)可能会产生奇怪的结果