Avatar billede morten_s Nybegynder
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??
Avatar billede stone Forsker
31. august 2003 - 12:43 #1
hvorfor ikke få cellen til at autosize efter indholdet i din stringgrid?
http://www.swissdelphicenter.ch/en/showcode.php?id=604
Avatar billede athlon-pascal Juniormester
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;
Avatar billede athlon-pascal Juniormester
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;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging