PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Systempalette umdesignen


Felix Kaiser
18.03.2002, 17:47
Hab hier wiedermal ne lustige Sache :)

Und zwar wollt ich die Systemfarbpalette des kleinen 486er hier einwenig umdesignen. Bezieht sich jetzt auf 256 Farbmodi im System, wo ja die GDI Farben mit Hilfe von Pixelmischungen versucht zu emulieren, falls diese nicht in der Systempalette drin sind. Ich wollt halt ein paar gezielten Farbeinträgen der Palette neue Werte zuweisen, die direkt ohne mischen gesetzt werden. Bezüglich API Funktionen bin ich im Moment festgeackert X(

Möchte halt dass mein Windows95 auf dem Teil einwenig schöner wird, farblich :) Und die Tseng ET4000 in dem Teil gibt nicht mehr als 256 Farben her.

Wär kewl wenn einer ne Idee zur Realisierung hätte :D
Derweilen versuch ich mal noch einen etwas barbarischeren Weg, und zwar direkt über den PALDAC, insofern mir Windows darauf Zugriff gewährt. Aber Windows95 sperrt eigentlich kaum I/O Ports, so dass man eigentlich weiterhin lustige Sachen mit machen kann. Mal schaun. :)


Diogenes
19.03.2002, 18:04
Was ist der PALDAC?

Eine vermutlich ebenso barbarische, aber dafür sicher funktionierende Möglichkeit ist es, mit (z. B. Resource Workshop) 1 256-Farben-bitmap zu machen, das 1 * 1 Pixel :)) groß ist. Dessen Farbtabelle liest man aus und wandelt sie in eine Palette um, die man später realisiert.

Ist mühsam, langsam, und eine Quälarei beim Coden :mauer: - aber es geht - jedenfalls unter Win311.
Ws müßte auch in den anderen Versionen funktionieren, denn es geht alles brav und ordentlich über die API. ;)

xOOn
19.03.2002, 20:38
Aber Windows95 sperrt eigentlich kaum I/O Ports

hat mal jemand behauptet win9x sei ein moderenes betriebssystem :D :D

probiert mal das aus

asm:

int 21h

das ist der spass des jahrhunderts

Felix Kaiser
19.03.2002, 22:00
PALDAC meint ich eigentlich garnich, ich meinte über den VGA DAC auf den PEL zuzugreifen, um die Palette in der Hardware zu ändern, ging aber nich :(

Die Lösung von Diogenes klingt interessant, damit mal bissl probiern wär ne Idee. Ich setz mich ran!

btw: Bei Bitmaps kann man alles auch mit Code machen, ohne selber zeichnen ;)

http://www.darkenemy.com/images/protect.gif <-- hab ich mit Delphi gecodet :D

Felix Kaiser
20.03.2002, 14:44
Hach, verdammt, ich habs versucht, hat nicht geklappt. Getestet hab ichs an MS Paint mit dem 256 Farbbitmap, wo 256 verschiedene Farben unter gebracht und verwendet werden. Paint realisiert ja auch die Palette. Allerdings scheint das mit den Hauptsystemfarben nicht zu klappen X(

Hatte aber noch ne Idee: Um wenigstens den Desktophintergrund farblich zu verbessern, einfach ne 256 Farbbitmap genommen, 32x32 Pixel, mit dieser &acute;exotischen&acute; Farbe gefüllt und als Hintergrundbild genommen mit der Methode &acute;Fläche&acute;, schaut kewl aus nun :]

Diogenes
22.03.2002, 14:21
Du bekommst immer komische Farben, stimmts?
Du mußt die Palette jedesmal dann realisieren, wenn Du sie brauchst.

Felix Kaiser
22.03.2002, 22:03
Wär mir zuviel Aufwand, zu dem zu hoher Resourcenverbrauch, die Kiste hat nur 20 MB RAM :D

Naja, dank Hintergrundbitmap als Muster hab ich die &acute;echte&acute; Farbe nun stets von Windows realisiert. Hach, herrlich :]

Diogenes
23.03.2002, 16:46
Wie baust Du die Farbe auf? Ich muß jedesmal, wenn ich eine auf den Schirm stell&acute;, die Palette realisieren (siehe GDI-Eigenschaften (http://www.coding-board.de/board/thread.php?threadid=922&boardid=48&styleid=1)). Machst Du das mit einem Bitmap-Pinsel?

Gib mit die Antworten bitte als API-Aufrufe - eh klar.

Zum Speicher: 16MB tun&acute;s auch (siehe Hex (http://www.coding-board.de/board/thread.php?threadid=983&boardid=2&styleid=1)) :rolleyes:

Felix Kaiser
23.03.2002, 16:55
Ich mach überhaupt nix jetze mit API, sondern trickse Windows halt nur aus :D Hab jetzt ne 32x32 Bitmap (256 Farben) erstellt, die ist gefüllt mir meiner &acute;echten&acute; Hintergrundfarbe. Jetzt hab ich die Bitmap als Hintergrundbild genommen, Typ: Fläche. Also der füllt die ganze Fläche aus mit dieser Bitmap. Und somit lass ich die GDI, den Explorer oder was auch immer den Hintergrund verwaltet das Teil zeichnen und die Palette realisieren, dass es sauber aussieht.

Diogenes
23.03.2002, 16:58
Bist ein ganz Schlauer, Guru :D Um das Palettenrealisieren kommst Du aber trotzdem nicht herum. Nur macht&acute;s jetzt Windows für Dich... ;)

Felix Kaiser
23.03.2002, 17:02
Is doch egal, hauptsache es schaut gut aus :D Und die Lösung spart Resourcen! :]

Diogenes
23.03.2002, 17:21
Wieviel Platz gibt es den für die GDI-Ressourcen unter Win9x und später? Beim 3.11 sind&acute;s geschlagene 64 kB, die von zwei komplizierteren Regionen schon aufgefressen werden :( echt widerlich - das hätte man besser machen können... Speziell, weil das Win selbst schon 1 sechstel davon frißt. :(

Felix Kaiser
23.03.2002, 23:54
Weiß ich nich, ist aber auf keinen Fall statisch, sondern wird dynamisch prozentual vom Arbeitsspeicher irgendwie berechnet. Bei den ganz neuen Win-Systemen gibts glaube diese Einteilung nicht mehr, da kann jede freie Resource alles werden, halt so wies gebraucht wird.

Diogenes
24.03.2002, 19:32
Original von Guru
Weiß ich nich, ist aber auf keinen Fall statisch, sondern wird dynamisch prozentual vom Arbeitsspeicher irgendwie berechnet. Bei den ganz neuen Win-Systemen gibts glaube diese Einteilung nicht mehr, da kann jede freie Resource alles werden, halt so wies gebraucht wird.



Naja, das sieht auch im Win311 so aus: Dort wird allerdings angegeben, wieviel von den zur Verfügung stehenden Ressourcen übrig ist. Mehr Platz wird&acute;s deswegen auch nicht, egal wieviel Speicher Du reinstopfst :rolleyes:

Felix Kaiser
24.03.2002, 23:50
Naja, Windows3.1 *imgehirnsuch* -> HTTP404, wird wohl nix, out of date :D

Is halt zu lang her und damals hab ich rein für DOS gecodet. Aber so wie du sagst is das ja oberaffenschwul gemacht in Win3.1. Aber imho war das ja auch nur ne &acute;geschönte&acute; DOS-Shell :))

Diogenes
26.03.2002, 18:15
Stimmt. Es war nie etwas anderes. Die Schönung hat mich dann doch &quot;verführt&quot; :)

Dagegen hilft übrigens: Daten am Heap aufheben und GDI-Objekt bei Bedarf erzeugen und nach Gebrauch löschen. Ist langsamer, spart aber Ressourcen *seufz*