掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
imageファイルをif文などに組み入れて上手くループさせるには? (ID:12273)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ここでの image1 などは TImage のことですか? だとすると image(i) というふうにアクセスするには、それらを貼ってあるフォームなどの FindComponent メソッドを使います。こんな感じです。 var compo:TComponent; compo := FindComponent('image'+IntToStr(i)); if compo is TImage then image35.picture := TImage(compo).Picture; FindComponent をヘルプで読んでみてください。 ところで、わたしは以前トランプゲームをつくったことがあります。麻雀ゲームとは、ある決まったサイズのイメージを多数保持して表示する必要があることは似てますね。そこで、画像を素早く表示するには、特定の画像を数値でアクセス出来ればいいことになります。わたしは、TImageList にトランプのカードのイメージを読み込んでおき、それをインデックスを指定して描画することにしました。一番簡単な方法をちょっと試してみませんか。 トランプカードのイメージは、ソリテアに使われているdllから設定できます。 新規で Form1 に Button1 と Win32 タブのところの ImageList1 を貼り付けます。 そして、 implementation {$R *.DFM} function cdtInit(var dx, dy : integer): integer; stdcall;external 'cards.dll' name 'cdtInit'; function cdtDraw(hdc, X, Y, iCard, iDraw, col : integer): integer; stdcall;external 'cards.dll' name 'cdtDraw'; function cdtTerm : integer; stdcall;external 'cards.dll' name 'cdtTerm'; var dx,dy:integer; procedure TForm1.FormCreate(Sender: TObject); var bmp:TBitmap; i:integer; begin cdtInit(dx,dy); ImageList1.Width := dx; ImageList1.Height := dy; bmp := TBitmap.Create; bmp.PixelFormat := pf4bit; bmp.Width := dx; bmp.Height := dy; bmp.Canvas.Brush.Color := clOlive; bmp.Canvas.FillRect(Rect(0,0,dx,dy)); for i := 0 to 51 do begin cdtDraw(bmp.Canvas.Handle,0,0,i,0,clWhite); ImageList1.AddMasked(bmp,clOlive); end; bmp.Free; end; procedure TForm1.FormDestroy(Sender: TObject); begin cdtTerm; end; procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin WindowState := wsMaximized; for i := 0 to 51 do ImageList1.Draw(Canvas,(dx+5)*(i mod 8)+10,(dy+5)*(i div 8)+10,i); end; のようにすると、Button1 を押すとフォームに52枚のカードイメージが描かれます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.