掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
imageIで円グラフに色を付けたいのですが?? (ID:150773)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Canvas.FloodFill関数の第4引数で「fsBorder」を指定すれば境界線の内側領域を塗り潰せます。 https://mam-mam.net/delphi/vcl_canvas_floodfill.html ちなみに円グラフを描画するなら、Pieを使えばFloodFill関数を使う必要が無いです。 procedure TForm1.Button1Click(Sender: TObject); var v:array[0..2] of integer; c:array[0..2] of TColor; i:Integer; s,ss:Integer; w,h:Integer; x1,y1,x2,y2:Integer; begin v[0]:=180; c[0]:=rgb(255,0,0); v[1]:=135; c[1]:=rgb(0,255,0); v[2]:=45; c[2]:=rgb(0,0,255); s:=0; for i := Low(v) to High(v) do s:=s+v[i]; w:=200; h:=200; Image1.Picture.Bitmap.Width:=w; Image1.Picture.Bitmap.Height:=h; Image1.Picture.Bitmap.Canvas.Brush.Style:=bsSolid; Image1.Picture.Bitmap.Canvas.Pen.Style:=psClear; ss:=0; for i := Low(v) to High(v) do begin Image1.Picture.Bitmap.Canvas.Brush.Color:=c[i]; x1:=trunc(w/2-cos(ss/s*Pi*2+Pi/2)*w/2); y1:=trunc(h/2-sin(ss/s*Pi*2+Pi/2)*h/2); x2:=trunc(w/2-cos((ss+v[i])/s*Pi*2+Pi/2)*w/2); y2:=trunc(h/2-sin((ss+v[i])/s*Pi*2+Pi/2)*h/2); Image1.Picture.Bitmap.Canvas.Pie( 0,0,w,h, x2,y2,x1,y1 ); ss:=ss+v[i]; end; end; また、TChart(teechart)でグラフを作成するのもありかと思います。 https://mam-mam.net/delphi/vcl_teechart.html ご参考まで。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.