31. august 2003 - 12:01
Der er
2 kommentarer og 1 løsning
Streched Draw i StringGrid
Tegner et billede i et StringGrid på følgende måde: procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin StringGrid1.Canvas.FillRect(Rect); imageList1.Draw(StringGrid1.Canvas, 0, 0, 0, True); end; Hvilket virker meget godt, problemmet er at jeg ønsker at image skal Streches til at fylde hele cellen, men syntes ikke lige jeg kan finde en metode til det??
Annonceindlæg fra XFlow
31. august 2003 - 13:08
#2
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var aBitmap: TBitmap; aRect: TRect; begin aBitmap := TBitmap.Create; try StringGrid1.Canvas.FillRect(Rect); aBitmap.Width := ImageList1.Width; aBitmap.Height := ImageList1.Height; aBitmap.Canvas.Brush.Color := StringGrid1.Canvas.Brush.Color; aBitmap.Canvas.Brush.Style := StringGrid1.Canvas.Brush.Style; aRect := Bounds(0, 0, aBitmap.Width, aBitmap.Height); aBitmap.Canvas.FillRect(aRect); ImageList1.Draw(aBitmap.Canvas, 0, 0, 0); StringGrid1.Canvas.StretchDraw(Rect, aBitmap); finally aBitmap.Free; aBitmap := nil; end; end;
31. august 2003 - 13:24
#3
Overstående kode strækker kun billedet over enkelte celler. Hvis billedet derimod skal strækkes over hele stringgriden, så prøv følgende, men jeg advarer, det er lidt langsomt: procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var aBitmap, bBitmap: TBitmap; aRect: TRect; begin aBitmap := TBitmap.Create; bBitmap := TBitmap.Create; try aBitmap.Width := ImageList1.Width; aBitmap.Height := ImageList1.Height; aBitmap.Canvas.Brush.Color := StringGrid1.Canvas.Brush.Color; aBitmap.Canvas.Brush.Style := StringGrid1.Canvas.Brush.Style; aRect := Bounds(0, 0, aBitmap.Width, aBitmap.Height); aBitmap.Canvas.FillRect(aRect); ImageList1.Draw(aBitmap.Canvas, 0, 0, 0); bBitmap.Width := StringGrid1.ClientWidth; bBitmap.Height := StringGrid1.ClientHeight; bBitmap.Canvas.StretchDraw(StringGrid1.ClientRect, aBitmap); StringGrid1.Canvas.CopyRect(Rect, bBitmap.Canvas, Rect); finally aBitmap.Free; bBitmap.Free; aBitmap := nil; bBitmap := nil; end; end;
Kurser inden for grundlæggende programmering