TBitmap.Canvas.Draw funktioniert unter Linux nicht???

Rund um die LCL und andere Komponenten
MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: TBitmap.Canvas.Draw funktioniert unter Linux nicht???

Beitrag von MmVisual »

@theo

Vielen Dank! Jetzt klappt es !!! :D :D
EleLa - Elektronik Lagerverwaltung - www.elela.de

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: TBitmap.Canvas.Draw funktioniert unter Linux nicht???

Beitrag von MmVisual »

@ theo, ich habe mich zu früh gefreut, nun ist das Bild zwar nicht im TImage schwarz, dafür noch im TDBGrid:
Jetzt muss ich bloß noch heraus finden warum das Transparent beim TImage funktioniert und beim TBitmap nicht. Ist wohl doch ein Lazarus-Linux-Bug.

Hier der Code wie ich das Bild in das TDBGrid male:

Code: Alles auswählen

OnDrawColumnCell
    If Not Column.Field.DataSet.IsEmpty And Assigned(lstRating) Then
    Begin
      TDbGrid(Sender).Canvas.Brush.Color := clWindow;
      if gdRowHighlight in State then
        TDbGrid(Sender).Canvas.Brush.Color :=
          ColorToRGB(TDbGrid(Sender).Canvas.Brush.Color) xor $1F1F1F;
      SetGridDrawColorSort(Sender, Column, State);
      TDBGrid(Sender).Canvas.FillRect(Rect);
      rct := Rect;
      If Not Column.Field.IsNull Then
      Begin
        i := (lstRating.Count Div 2) + Column.Field.AsInteger - 1; // Umrechnung +/- auf Listenindex
        bm := TBitmap(lstRating[i]);
        if rct.Right - rct.Left > bm.Width Then
          rct.Right := rct.Left + bm.Width;
        If rct.Bottom - rct.Top > bm.Height Then // Feld ist höher als das Bitmap, Mittig zeichnen
        Begin
          rct.Top := (((rct.Bottom - rct.Top) Div 2) + rct.Top) - (bm.Height Div 2);
          rct.Bottom := rct.Top + bm.Height;
        end;
        TDbGrid(Sender).Canvas.StretchDraw(rct, bm)
      End;
    End;
  End;
Dateianhänge
Bild2.png
Bild2.png (6.73 KiB) 674 mal betrachtet
Zuletzt geändert von MmVisual am Sa 18. Mai 2013, 21:04, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: TBitmap.Canvas.Draw funktioniert unter Linux nicht???

Beitrag von MmVisual »

Kann es sein, dass Canvas.Draw() und Canvas.Stretchdraw() unter Linux den Parameter Transparent und TransparentColor einfach ignorieren :?:
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten