お世話になります。
設定した数値により、FormのImage.Canvasに表示する画像を変えたいと思い、
FormにImage1,Image4を貼り付け、それぞれPictureを設定します。
var
C : Array[0..4] of ???; ←ここでどの型を書いていいのかわかりません。
I : integer;
begin
with Image0.Canvas do
begin
C[0] := Image1.Picture.Graphic;
C[1] := Image2.Picture.Graphic;
C[2] := Image3.Picture.Graphic;
C[3] := Image4.Picture.Graphic;
if sbp <110 and smk = 0 then
I := 0
else if sbp > 250 and smk = 0 then
I:= 1
else if sbp <110 and smk = 1 then
I:=2
else if sbp > 250 and smk = 1 then
I:=3;
Draw(10,10,C[I]);
end;
end;
上記のようなプログラムで、条件により、表示するImageを変えられると思いますが、
配列を宣言した際、どの型を選んでいいのかが分かりません。
どなたかご教示願えませんでしょうか?
また、Image1..Image4はTransparentをTrueにしているのですが、Canvasですでに描画している上に表示をさせると、Imageの周りが白くなり、ベースの色(例えば青)
が見えません(透過していない)。これもあわせてご教授いただけると助かります。
条件によりImage1〜Image4までの画像をImage0に
描画したいんですよね。
こんな感じでいかがでしょう?
procedure Tform1.DrawImage(sbp,smk :integer);
var
Graph :TGraphic;
begin
Graph :=nil; //初期化
if (sbp <110) and (smk = 0) then
Graph :=Image1.Picture.Graphic
else if (sbp > 250) and (smk = 0) then
Graph :=Image2.Picture.Graphic
else if (sbp <110) and (smk = 1) then
Graph :=Image3.Picture.Graphic
else if (sbp > 250) and (smk = 1) then
Graph :=Image4.Picture.Graphic;
Image0.Canvas.Draw(10,10,Graph);
end;
透過に関してはどうでしょう。
イージーな回答ですみませんが、TImageは左下のピクセルを
透過色とするのでそこが別の色で埋まっているとか?
みんみんさん
お返事ありがとうございました。
私もif〜else ifでいくつも条件を書き出す方法も考えたのですが、
スマートじゃないかなあと思いまして、配列を使って何とかできないかなと
考えました。
型としては Array[0..3] of Integer のIntegerに代わる画像用の
ものはないんですね…
透過に関しては、私も左下がその色(結局は白)で埋まっているのかと
ちょっと疑っております。
画像ファイル(jpeg)を作成する時にちょっと気をつけてみようと思います。
ありがとうございました。
> 型としては Array[0..3] of Integer のIntegerに代わる画像用の
> ものはないんですね…
普通に・・・
Array[0..4] of TGraphic;
・・・で、いいのでは?
ツイート | ![]() |