有关Canvas画三角形的一个问题!各位大侠一定要帮我呀!(50分)

  • 主题发起人 主题发起人 feifan
  • 开始时间 开始时间
F

feifan

Unregistered / Unconfirmed
GUEST, unregistred user!
hi!我是Canvas对象画了一个三角形,可三角形我画出来了,
但是我怎么将颜色添充到三角形里面呢?
代码如下:
——————————————————————————
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Procedure DrawSanJianXing(FX,FY,SX,SY :Integer; FClr:TColor; Sender:TCanvas);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DrawSanJianXing(FX, FY, SX, SY: Integer; FClr: TColor;
Sender: TCanvas);
begin

Sender.MoveTo(FX,FY);
Sender.LineTo(SX,SY);
Sender.LineTo(FX,FY + ((SY-FY) * 2));
Sender.LineTo(FX,FY);
//以上是画三角形!
Sender.FloodFill(SX + ((SX-FX) div 2),FY + ((SY-FY) * 2),FClr,fsBorder);//这一句用来填充颜色!

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
DrawSanJianXing(10,10,40,40,clBlue,Canvas);
end;

end.
不知我错在哪里呀?应该怎样去写DrawSanJianXing这个过程!请各们人士指教!小弟感激不尽!
 
to feifan
你现在在哪工作?
 
先设置刷子为你要的颜色。

然后去看看Polygon的帮助
Canvas.Brush.Color := clTeal;
Canvas.Polygon([Point(10, 10), Point(30, 10),
Point(130, 30), Point(240, 120)]);
 
同意wk_knife的观点
 
用这个试试,计算不一定准确。

procedure TForm1.DrawSanJianXing(FX, FY, SX, SY: Integer; FClr: TColor;
Sender: TCanvas);
begin
Canvas.Brush.Color := FClr;
Canvas.Polygon([Point(FX,FY),Point(SX,FY),Point(FX,SY)]);
//删除这句多余的。
end;
 
procedure TForm1.DrawSanJianXing(FX, FY, SX, SY: Integer; FClr: TColor;
Sender: TCanvas);
var
oldBrushColor, OldPenColor: TColor;
begin
oldBrushColor := Sender.Brush.Color;
OldPenColor := Sender.Pen.Color;
Sender.Brush.Color := FClr;
Sender.Pen.Color := FClr;
Sender.Polygon([Point(FX, FY), Point(SX, SY), Point(FX, FY + ((SY - FY) * 2))]);
Sender.Brush.Color := oldBrushColor;
Sender.Pen.Color := OldPenColor;
end;
 
谢谢各位!
下次再会
 
后退
顶部