AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Icons mit Delphi erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Icons mit Delphi erstellen

Ein Thema von Martin K · begonnen am 7. Mai 2006 · letzter Beitrag vom 15. Mai 2006
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#1

Icons mit Delphi erstellen

  Alt 7. Mai 2006, 17:06
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
Wäre also für jeden Codeschnipsel dankbar...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
DBR

Registriert seit: 19. Jul 2005
38 Beiträge
 
#2

Re: Icons mit Delphi erstellen

  Alt 7. Mai 2006, 18:58
http://www.dbr-software.de/delphi/makeico.php

Vielleicht hilfts.

Gruß DBR
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Icons mit Delphi erstellen

  Alt 7. Mai 2006, 19:07
Danke, für die Antwort

Nur leider ein ziemlich langer Code ohne Kommentare

Aber mal sehen, vielleicht bekomme ich da so langsam den Durckblick



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
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Icons mit Delphi erstellen

  Alt 10. Mai 2006, 11:08
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...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Icons mit Delphi erstellen

  Alt 13. Mai 2006, 14:07
Hmm....

Also irgendwie muss man doch eine Farbpalette speichern können...

vielleicht als TStream ?
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Icons mit Delphi erstellen

  Alt 13. Mai 2006, 14:20
Hallo,
Zitat von Martin K:
Hmm....

Also irgendwie muss man doch eine Farbpalette speichern können...

vielleicht als TStream ?
Hier hat Luckie ein Codeschnipsel gepostet, in dem auch die Palette gesichert wird.
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
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Icons mit Delphi erstellen

  Alt 13. Mai 2006, 16:00
Danke erstmal...

Aber irgendwie ist das etwas zu hoch für mich:

Palette laden:
Delphi-Quellcode:
    {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)));
Palette speichern:
  (SizeOf(TLogPalette) + (Palettengröße - 1) * SizeOf(TPaletteEntry)); Ja, wo ist denn hier sowas wie FileName oder so???

Kann mir einer helfen?
wäre echt nett...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: Icons mit Delphi erstellen

  Alt 13. Mai 2006, 16:07
Hallo,
Zitat von Martin K:
Danke erstmal...

Aber irgendwie ist das etwas zu hoch für mich:

Palette laden:
Such Dir doch mal Informationen zu MSDN-Library durchsuchenGetSystemPaletteEntries bzw. MSDN-Library durchsuchenGetPaletteEntries. Damit kannst Du die Palette eines DCs in eine TLogPalette-Struktur laden.
Zitat von Martin K:
Palette speichern:
  (SizeOf(TLogPalette) + (Palettengröße - 1) * SizeOf(TPaletteEntry)); Ja, wo ist denn hier sowas wie FileName oder so???
Na ja, Du hast da eine Record-Struktur im Speicher liegen. Die kannst Du doch sonstwo hin kopieren. In einen Stream, in eine Datei, wo auch immer.
In diesem Fall hast Du ja eine Palette mit 256 Einträgen. Wenn Du einen Stream hast, dann geht das so:
Stream.Write(lpPal^, SizeOf(TLogPalette) + 255 * SizeOf(TPaletteEntry)); Ich hoffe, das hilft.

Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Icons mit Delphi erstellen

  Alt 13. Mai 2006, 16:12
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);
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Icons mit Delphi erstellen

  Alt 13. Mai 2006, 16:34
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:
    lpPal^.palNumEntries :=
      GetSystemPaletteEntries(dc,
      0,
      256,
      lpPal^.palPalEntry);
Es wird allerdings die Systempalette geladen.
Wie kann ich hier die Palette aus einem Stream (Datei) laden?
GetPaletteEntries... und dann?
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz