[BlueLeaf1336]> PROGRAM> Natural Born Junk>

塗りつぶさないで円を描く

historyTOP

2002/11/11:作成
2004/02/16:更新

memoTOP

楕円を描く関数があるが、塗りつぶしてしまうタイプしかない。
つまり単純に円を描こうとしてもそういう関数が(多分)ない。なので弧を描く関数を使用している。

というわけでもなく

Canvas.Brush.Style := bsClear;

とすればよいということを、BBSで教えてもらいました。ありがとうございました。

codeTOP

procedure DrawCircle(_Center: TPoint; _Radius: integer; _Canvas: TCanvas);
var
    Left, Top, Bottom, Right: integer;
    PreStyle: TBrushStyle;
begin
    //  半径から上下左右を決定
    Left   := _Center.X - _Radius;
    Top    := _Center.Y - _Radius;
    Right  := _Center.X + _Radius;
    Bottom := _Center.Y + _Radius;
    //  スタイルを保存
    PreStyle := _Canvas.Brush.Style;
    //  塗りつぶしなしに
    _Canvas.Brush.Style := bsClear;
    //  描画
    _Canvas.Ellipse(Left, Top, Right, Bottom);
    //  元に戻す
    _Canvas.Brush.Style := PreStyle;
end;

sampleTOP

procedure TForm1.Button1Click(Sender: TObject);
begin
    DrawCircle(Point(50, 50), 20, Canvas);
end;

EOFTOP