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 tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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