![]() |
GR32_PNG.pas
Wie muss man diese Komponente installieren? muss sie in das packuat von grafics32 eingebunden werden?
![]() hierfür brauch ich das nämlich. |
Re: GR32_PNG.pas
In der Unit befindet sich keine Komponente, also gibts auch nichts zum Installieren. Soll heißen, einfach die Datei in den Suchpfad legen.
|
Re: GR32_PNG.pas
Ich glaube, BrainCracked hat Probleme mit der GR32_PNG selbst, denn die verwendet die Unit PNGImage, und die ist z.B. bei mir auch nicht vorhanden.
|
Re: GR32_PNG.pas
ja genau. beim compilieren makiert er immer die zeile wo was von der PNGImage steht. Wo kriegt man die denn her?
|
Re: GR32_PNG.pas
Hat sich erledigt. Habs hingekriegt.
|
Re: GR32_PNG.pas
Zitat:
Dann weiß der nächste, der das hier in der DP sucht, wie er sein Problem lösen kann. ;) |
Re: GR32_PNG.pas
Noch besser wärs, wenn gleich der Autor der Komponente seine
![]() |
Re: GR32_PNG.pas
Nur mal so nebenbei, ich habe mit das einfach mal so (siehe D.-Code) umgeschrieben. Dann kann man auch auf die extra Unit verzichten und die handhabung ist für mich einfacher/fexibler.
Delphi-Quellcode:
// Function: PNGToBitmap32(DstBitmap: TBitmap32; Png: TPngObject): Boolean;
// Das Result ist TRUE wenn das PNG-Image einen Alphachannel hat. ////////////////////////////////////////////////////////////////////////////// function PNGtoBitmap32(DstBitmap: TBitmap32; Png: TPngObject): Boolean; var TransparentColor: TColor32; PixelPtr: PColor32; AlphaPtr: PByte; X, Y: Integer; begin DstBitmap.Assign(PNG); DstBitmap.ResetAlpha; case PNG.TransparencyMode of ptmPartial: // 8Bit Image begin if (PNG.Header.ColorType = COLOR_GRAYSCALEALPHA) or (PNG.Header.ColorType = COLOR_RGBALPHA) then begin PixelPtr := PColor32(@DstBitmap.Bits[0]); for Y := 0 to DstBitmap.Height - 1 do begin AlphaPtr := PByte(PNG.AlphaScanline[Y]); for X := 0 to DstBitmap.Width - 1 do begin PixelPtr^ := (PixelPtr^ and $00FFFFFF) or (TColor32(AlphaPtr^) shl 24); Inc(PixelPtr); Inc(AlphaPtr); end; end; end; Result := True; end; ptmBit: // 24 Bit Image begin TransparentColor := Color32(PNG.TransparentColor); PixelPtr := PColor32(@DstBitmap.Bits[0]); for X := 0 to (DstBitmap.Height - 1) * (DstBitmap.Width - 1) do begin if PixelPtr^ = TransparentColor then PixelPtr^ := PixelPtr^ and $00FFFFFF; Inc(PixelPtr); end; Result := True; end; ptmNone: Result := False; end; end;
Delphi-Quellcode:
// Anwendungsbeispiel:
uses ..., GR32, PNGImage; var PngImg: TPngObject; Bmp32: TBitmap32; BEGIN Bmp32 := TBitmap32.Create; try PngImg := TPngObject.Create; try PngImg.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'test.png'); // oder PngImg.LoadFromResource(...); etc. PNGToBitmap32(Bmp32, PngImg); finally PngImg.Free; end; Bmp32.Draw(...); finally Bmp32.Free; end; end; END. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz