条件によりイメージを変える

解決


ちこ  2007-03-07 03:30:25  No: 25188

お世話になります。

設定した数値により、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の周りが白くなり、ベースの色(例えば青)
が見えません(透過していない)。これもあわせてご教授いただけると助かります。


みんみん  2007-03-07 04:26:16  No: 25189

条件により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は左下のピクセルを
透過色とするのでそこが別の色で埋まっているとか?


ちこ  2007-03-07 17:56:04  No: 25190

みんみんさん

お返事ありがとうございました。
私もif〜else ifでいくつも条件を書き出す方法も考えたのですが、
スマートじゃないかなあと思いまして、配列を使って何とかできないかなと
考えました。

型としては  Array[0..3] of Integer のIntegerに代わる画像用の
ものはないんですね…

透過に関しては、私も左下がその色(結局は白)で埋まっているのかと
ちょっと疑っております。
画像ファイル(jpeg)を作成する時にちょっと気をつけてみようと思います。

ありがとうございました。


orz  2007-03-07 18:03:12  No: 25191

> 型としては  Array[0..3] of Integer のIntegerに代わる画像用の
> ものはないんですね…

普通に・・・

Array[0..4] of TGraphic;    

・・・で、いいのでは?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加