Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Faller Junior JLI'ler
Alter: 36 Anmeldedatum: 30.11.2006 Beiträge: 88 Wohnort: Dresden Medaillen: Keine
|
Verfasst am: 14.08.2007, 13:21 Titel: Bilder darstellen ohne Dll |
|
|
Ich arbeite gerade an einem kleinen projekt bei dem am ende des Programmes nur eine exe ohne jede abhängikeit erstellt werden darf.
nun gibt es ja freie Gui Platformen die dies machen müssten.
Freeimage oder halt hier welche
http://www.thefreecountry.com/sourcecode/gui.shtml
nun ich suche nun schon seit wochen und probiere rum.
MiniGUI ist nur für linux
VCF Visual Component Framework arbeitet mit einer dll die es net gibt
und libpng hab ich auch versucht blos leider kann man dort nix darstellen.
Und wie ich es eine schnelle bild ausgabe programmiere weis ich leider noch net.
Also nun zu meinen Fragen:
Kennt jemand eine Bibliothek das ein Bild darstellen kann "png" ohne eine abhängigkeit.
wenn ich lippng nutze müste ich wissen wie man ein Bild ausgibt ohne pixel für pixel alle hintereinander mit setpixel auszugeben.
Es geht um Bilder wie png oder jpg kein bmp.
Ich suche schon seit Ewigkeiten und weis nicht weiter wie man sowas macht
mfg faller.
ps google weis ich net was ich eingaben soll das ein paar sinvolle treffer erscheinen. _________________ versuche alles nur wann und wie ist die frage |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 14.08.2007, 13:47 Titel: |
|
|
Ok, erstens ist es für Windows, nehme ich an?
Dann gibt es sowieso fast immer Abhängigkeiten, eben ein paar Standard dll's die aber in jedem Windowsverzeichnis liegen müssen, eben weil quasi jedes Programm sie benötigt.
Du könntest daher die WInAPI benutzen mit GDI kann man auch schon ne Menge machen, jedenfalls wenn es jetzt kein Spiel sein soll.
Um png's laden zu können wirst du eh eine separate Lib benötigen, allerdings kannst du diese ja statisch linken daher entstehen keine neuen Abhängigkeiten.
Bei Windows XP ist ja DirectX auch standardmäßig vorhanden, vielleicht nicht die neuste Version, aber trotzdem dürftest du ja DirectDraw verwenden können. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Faller Junior JLI'ler
Alter: 36 Anmeldedatum: 30.11.2006 Beiträge: 88 Wohnort: Dresden Medaillen: Keine
|
Verfasst am: 14.08.2007, 15:01 Titel: |
|
|
wie linke ich statisch eine dll datei ???.
Das Programm soll für windows 95 bis xp sein eventuel Vista.
Wie baue ich eine solche statische verlinkung ein.
Wäre trotzdem net wenn jemand die Frage von noch beantwortet welche man nutzen solte um png zu nutzen zu können
mfg Faller
ps ich werde mal nach statischer verlinkung suchen. _________________ versuche alles nur wann und wie ist die frage |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 14.08.2007, 16:43 Titel: |
|
|
Hmm, du lädst das Bild mit libpng - da gibt es eine Funktion, wo du das Bild zeilenweise auslesen kannst und schreibst es in den Speicher. Diesen Speicherbreich kannst du mit Standard-Windows-Funktionen anzeigen, da brauchst du keine dlls oder etwas anderes.
C. |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 14.08.2007, 17:56 Titel: |
|
|
dll's link man nicht statisch. Evtl. könnte man die als Ressource einbinden oder so, aber dafür sind die nicht gemacht.
Wenn du eine Bibliothek kompilierst kannst du entweder eine .dll erzeugen oder eine .lib (bzw. .a). Die Version mit .lib wird statisch gelinkt, die dll dynamisch (daher der Name). Bei libpng dürfte beides möglich sein. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Faller Junior JLI'ler
Alter: 36 Anmeldedatum: 30.11.2006 Beiträge: 88 Wohnort: Dresden Medaillen: Keine
|
Verfasst am: 14.08.2007, 18:40 Titel: |
|
|
thx für die antworten
zu Christian Rousselle
also das mit der libpng wind ich intressant.
da ich mein bild schon so ausgellesen habe.
ein bischen code
Code: |
for (y=0; y<endey; y++)
{
png_byte* row = row_pointers[y];
for (x=0; x<endex; x++)
{
png_byte* ptr = &(row[x*3]);
SetPixel(hdc,x,30+y, RGB(ptr[0],ptr[1],ptr[2]));
}
}
|
so gebe ich derzeitig mein bild aus.
wie bekomme ich jetze die png daten so in den speicher das ich die einfach per gdi ausgeben kann???
zu
Jonathanklein
weist du wo ich ne gdi+ lib herbekomme. _________________ versuche alles nur wann und wie ist die frage |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 14.08.2007, 19:25 Titel: |
|
|
Hö? So wie ich das sehe, bist du gerade dabei, ein png-Bild mithilfe von pnglib und GDI auszugeben...
Wenn du es etwas komfortabler und vor allen Schneller haben willst, könntest du dir mal HBITMAP anschauen. IMO gabs damit eine Technik, wo man mit GDI befehlen eine Grafik im Speicher "gemalt" hat und die dann mit einem einzigen Befehl auf dem Bildschirm ausgeben konnte. Du könntest mit der SetPixelschleife dein Bild laden und dann immer bei Bedarf mit einem Schlag anzeigen, das dürfte um einiges schneller sein. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Faller Junior JLI'ler
Alter: 36 Anmeldedatum: 30.11.2006 Beiträge: 88 Wohnort: Dresden Medaillen: Keine
|
Verfasst am: 15.08.2007, 07:25 Titel: |
|
|
Ich versuche 2 spurisch zu arbeiten wenn das eine nicht funktioniert dann vieleicht das andere.
also 1 theroie wie mans machen könnte.
libpng bild lessen dann in einen spiecher laden als bmp und dann über gdi ausgeben.
Frage dazu wie bekomme ich den Aufbau der HBITMAP herraus um diese zu imitieren.
zu 2 eine dll statisch einbinden.
funktioniert nur mit einer .lib Datei da wäre es ja am besten wenn ich die gdiplus.lib ihrgentwo her bekomme. Und dann auf alle funktionen von gdi plus nutzen könnte.
freue ich mich auf alle anregungen.
mfg faller _________________ versuche alles nur wann und wie ist die frage |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 15.08.2007, 09:17 Titel: |
|
|
Wieso unbedingt GDI+? Alles was du willst, geht auch wunderbar "nur" mit GDI, und eine zusätzliche lib einzubinden vergrößert immer die ausführbare Datei.
Und über HBITMAP findet man nun wirklich genug im Internet. Hier mal ein kleiner Tip: klick
Das dritte von oben hört sich schon einmal vielversprechend an. Und über die verwendeten Funktionen findest du alles im MSDN. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Faller Junior JLI'ler
Alter: 36 Anmeldedatum: 30.11.2006 Beiträge: 88 Wohnort: Dresden Medaillen: Keine
|
Verfasst am: 15.08.2007, 09:37 Titel: |
|
|
nunja als erstes ich möchte alle möglichkeiten verstehen wileicht machen sie ja sinn nur halt wann anders.
Also wie baue ich statisch eine dll in mein Projekt ein?
Zu meinem derzeitigen Projekt würde es warscheinlich ausreichen das Bild umzuwandeln da hast du recht "Jonathan klein".
Aber was ist wenn ich im Verlauf des Projektes noch andere grafik Formate einbauen möchte zum Beispiel, dann wäre ja gdi+ die bessere Lösung.
finde ich zumindestens.
zu dem HBITMAP hab ich noch gar net gesucht aber danke für den link. _________________ versuche alles nur wann und wie ist die frage |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 15.08.2007, 09:55 Titel: |
|
|
dll's soll man nicht statisch einbinden, auch wenn es vielleicht ginge. Wenn du eine lib statisch linken möchtest, geht das genauso wie z.B. mit DirectX. Man inkludiert die passenden Header, und stellt in den Projektsituationen die lib ein. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Faller Junior JLI'ler
Alter: 36 Anmeldedatum: 30.11.2006 Beiträge: 88 Wohnort: Dresden Medaillen: Keine
|
Verfasst am: 15.08.2007, 10:10 Titel: |
|
|
ok hab ich so gemacht steht.
Also "Extras" "optionen" dann "Verzeichnisse" und dann "Bibliotehken"
dann die lib ausgesucht.
Und gestetzt.
Dann auf "Projekt" "Einstellungen" dann auf "Linker" und dann die gdiplus.lib bei objekt module hingeschrieben.
dann die header Dadein eingebunden.
zb.
#include"../neu/GDIPlus/Includes/GdiPlus.h"
ok 0 Fehler 0 Wahrings programm wird gestartet.
dann exe auf andernen Rechner kopiert.
dann dort Fehler.
Die Dynamic Link liberay gdipluss.dll wurde im angegben pfad nicht gefunden.
Als so klapt es nicht was hab ich falsch gemacht.
wie ändere ich das die abhängigkeit underbrochen wird.
ich hab auch es auch ausprobiert "projekt" "einstellung" "allgemein"
"mfc mit einer gemeinsamen dll erstellen "
ich nutze zwar win und keine konsole und auch kein mfc
aber in einigen Foren wird das empfohlen
mfg Faller _________________ versuche alles nur wann und wie ist die frage |
|
Nach oben |
|
|
|