グリッドの背景に画像描画

解決


deldel  2006-10-30 21:55:24  No: 23665

下記のようにして、グリッドの背景に画像を描画しようとしました。
画像は表示されたのですが、テキストが表示されません。
セルをクリックすると表示されますが、再描画が掛かると消えます。
どなたかわかる方、おられませんでしょうか?

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  saText: AnsiString;
begin
  saText := TStringGrid(Sender).Cells[ACol, ARow];

  with TStringGrid(Sender).Canvas do begin
    Bitblt(TStringGrid(Sender).Canvas.Handle, 0, 0, Image1.Width, Image1.Height, Image1.Canvas.Handle, 0, 0, SRCCOPY);

    TextRect(Rect, Rect.Left+12, Rect.Top+4, saText);
    //DrawText(StringGrid1.Canvas.Handle, PChar(saText), Length(saText), Rect, DT_SINGLELINE or DT_VCENTER or DT_LEFT);
    //TextOut(Rect.Left+12, Rect.Top+4, saText);
  end;
end;


too  2006-10-30 22:43:22  No: 23666

with TStringGrid(Sender).Canvas do begin
  Brush.Style := bsClear;
  CopyRect(Rect,Image1.Canvas,Rect);
  TextRect(Rect,Rect.Left+12,Rect.Top+4,saText);
end;
なんてーのは、ダメだろうなぁ。。。


deldel  2006-10-30 23:28:11  No: 23667

tooさん、ありがとうございました。
Bitblt と CopyRect で何がどー違うのかよく分からないのですが、
できました。^^;まだまだ奥深ですね・・・。


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

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






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