![]() |
Icons mit Delphi erstellen
Hi,
hat schon jemand so etwas gemacht ? Mein neues Projekt soll en IconEditor werden. Allerdings gibt es noch ein paar Probleme: :?: 1. Wie kann man die Farbpalette einen Icons ändern? :?: 2. Wie kann man Icons bearbeiten (verwende zur Zeit die Methode in Bitmap umwandeln. Allerdings geht dann die Transparenz verloren). Also es sollten möglichst alle Bittiefen verwendet werden können: 32 Bit, 24 Bit, 16 Bit, 8 Bit, 4 Bit, 1 Bit. Bei den Bittiefen 16, 8, 4 und 1 Bit sollten außerdem die Farben der Palette manuell geändert werden können. Sind in dieser Beziehung die Paletten bei Bitmaps und Icons (wegen Umwandlung) auch 1:1 kompatibel? Vielleicht hat ja jemand mit so etwas schon Erfahrungen gesammelt, in der Suche hab ich leider nichts brauchbares gefunden :? :cyclops: Wäre also für jeden Codeschnipsel dankbar... |
Re: Icons mit Delphi erstellen
|
Re: Icons mit Delphi erstellen
Danke, für die Antwort :thumb:
Nur leider ein ziemlich langer Code ohne Kommentare :? Aber mal sehen, vielleicht bekomme ich da so langsam den Durckblick :cyclops: Ich dachte halt, irgendjemand aus der DP hätte vielleicht so was schonmal gemacht und könnte mir evtl. ein paar kleine Tipps geben, bin für jede Hilfe dankber :!: |
Re: Icons mit Delphi erstellen
Weiß jemand, wie man eine Farbpalette (4 Bit, 8 Bit) speichern kann (also nur die Palette, ohne Bild) ???
Hab hier Farbpaletten von einem anderen Programm vorliegen (*.dat Dateien), wäre ganz gut wenn ich diese auslesen bzw. wieder speichern könnte... |
Re: Icons mit Delphi erstellen
Hmm....
Also irgendwie muss man doch eine Farbpalette speichern können... vielleicht als TStream ? |
Re: Icons mit Delphi erstellen
Hallo,
Zitat:
![]() Hierfür gibt es die Struktur TLogPalette. Das ist ein Record mit einem dynamischen Array am Ende. Im verlinkten Beitrag steht, wie Du Dir die Palette holen kannst. Danach musst Du nur noch den Record irgendwo speichern (SizeOf(TLogPalette) + (Palettengröße - 1) * SizeOf(TPaletteEntry)). Gruß xaromz |
Re: Icons mit Delphi erstellen
Danke erstmal...
Aber irgendwie ist das etwas zu hoch für mich: Palette laden: :?:
Delphi-Quellcode:
Palette speichern: :?:
{allocate memory for a logical palette}
GetMem(lpPal, SizeOf(TLOGPALETTE) + (255 * SizeOf(TPALETTEENTRY))); {zero it out to be neat} FillChar(lpPal^, SizeOf(TLOGPALETTE) + (255 * SizeOf(TPALETTEENTRY)), #0); {fill in the palette version} lpPal^.palVersion := $300; {grab the system palette entries} lpPal^.palNumEntries := GetSystemPaletteEntries(dc, 0, 256, lpPal^.palPalEntry); if (lpPal^.PalNumEntries <> 0) then {create the palette} bm.Palette := CreatePalette(lpPal^); FreeMem(lpPal, SizeOf(TLOGPALETTE) + (255 * SizeOf(TPALETTEENTRY)));
Delphi-Quellcode:
:wiejetzt: Ja, wo ist denn hier sowas wie FileName oder so???
(SizeOf(TLogPalette) + (Palettengröße - 1) * SizeOf(TPaletteEntry));
Kann mir einer helfen? :arrow: wäre echt nett... |
Re: Icons mit Delphi erstellen
Hallo,
Zitat:
![]() ![]() Zitat:
In diesem Fall hast Du ja eine Palette mit 256 Einträgen. Wenn Du einen Stream hast, dann geht das so:
Delphi-Quellcode:
Ich hoffe, das hilft.
Stream.Write(lpPal^, SizeOf(TLogPalette) + 255 * SizeOf(TPaletteEntry));
Gruß xaromz |
Re: Icons mit Delphi erstellen
Mal gucken, werd mir mal irgendwas daraus basteln...
Ziel soll eben so etwas sein:
Delphi-Quellcode:
procedure LoadPalette(const FileName: String {*.dat}; var Palette: array of TColor);
procedure SavePalette(const FileName: String; const Palette: array of TColor); |
Re: Icons mit Delphi erstellen
Okay, ich glaub ich check's langsam...
Die Palette ist also eine PLogPalette, ein Zeiger auf TLogPalette. 1. Frage: Wie bekomme ich aus TLogPalette ein array[0..255] of TColor ? 2. Frage: In dieser Zeile wird also die Palette geladen:
Delphi-Quellcode:
Es wird allerdings die Systempalette geladen.
lpPal^.palNumEntries :=
GetSystemPaletteEntries(dc, 0, 256, lpPal^.palPalEntry); Wie kann ich hier die Palette aus einem Stream (Datei) laden? GetPaletteEntries... und dann? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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