Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » tiff.-Grafiken in Dialog einfügen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
10.02.2006, 16:19 Uhr
Spacelord
Hoffnungsloser Fall


Also entweder sind sämtliche 10 tif(f) Bilder die ich mir zum Testen aus dem Netz geladen habe in Wirklichkeit nen anderes Format oder bei euch ist doch irgendwas anders?
Bei mir funktioniert der Code mit .tif einwandfrei.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
11.02.2006, 11:12 Uhr
mmc20
puss in boots


lad doch mal eins hoch, vielleicht haben wir auch noch ne ältere version wo die tiff's noch nicht mit drin sind ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
11.02.2006, 11:49 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ich hab den da Code nicht ausprobiert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
11.02.2006, 13:14 Uhr
Spacelord
Hoffnungsloser Fall


Naja,sofern es denn überhaupt nicht funktioniert (wie gesagt bei mir geht es ) kann ich noch den Schritt nach GDI+ empfehlen.Die Image Klasse kann auf jeden Fall tiffs anzeigen.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
16.02.2006, 10:08 Uhr
kleineSchildy



Hallo spacelord,

also ich habe es eben mit jpg versucht, das klappt dein Code super. Ich muß da wohl leider einen anderen Weg einschlagen Ich habe es noch selbst mit Bildern versucht, die ich als .tif abgespeichert habe. Funktioniert alles nicht.

Kannst du mir was genaueres über GDI+ sagen? Ich bin doch noch Laie auf dem Gebiet

Viele Grüße
Jana
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
16.02.2006, 11:38 Uhr
kleineSchildy



also mir würde es schon helfen, wenn man mir erklärt, wie ich GDI+ in mein VC++ einbinden kann.

allein


C++:
#include "gdiplus.h"



hilft leider nicht.

Viele Grüße
Jana
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
17.02.2006, 00:12 Uhr
Spacelord
Hoffnungsloser Fall


Hi,
mit welcher Windowsversion arbeitest du?Welche Version von VC++ ?
Hast du das aktuelle Plattform SDK installiert?
Vorausgesetzt dass du das aktuelle Plattform SDK installiert hast und VC++ die Pfade zum SDK bekannt sind ist deine IDE schon bereit zum durchstarten.
Die zum "Betrieb" nötige Gdiplus.dll ist fester Bestandteil von XP.Für andere Windowsversionen gibt es Redistributables.

Jetzt mal ne kleine Anleitung wie du nen Bild mit GDI+ zeichnest.

Als erstes musst du den Header gdiplus.h einbinden (am besten in stdafx.h) und den Linker anweisen die gdiplus.lib mitzulinken.

Jetzt fügst du deiner Anwendungsklasse 2 Attribute hinzu.Der Einfachheit zuliebe einfach public.


C++:
CDeineApp:public CWinApp
{
......
public:
    Gdiplus::GdiplusStartupInput startInput;
    ULONG_PTR token;
.......
};


Zu beachten ist dass das Ganze GDI+ Gelumpe in seinem eigenen Namensraum liegt und deshalb damit qualifiziert werden muss(oder halt using Direktiven nutzen).

Jetzt must du in der WinApp Klasse noch die Funktionen GdiplusStartup und GdiplusShutdown unterbringen um GDI+ beim Start zu initialisieren und am Ende wieder aufzuräumen.In ner MFC Anwendung bieten sich da InitInstance und ExitInstance an.
Also:

C++:
BOOL CDeineApp::InitInstance()
{
  .....
    Gdiplus::GdiplusStartup(&token,&startInput,NULL);
    CDeinDlg blablub;
  ......
}

int CDeineApp::ExitInstance()
{
    Gdiplus::GdiplusShutdown(token);
    
    return CWinApp::ExitInstance();
}



Das war es an Vorbereitungen.
Jetzt legst du in deinem Dialog nen CStatic als Zeichenfläche an,gibst dem Teil die Id IDC_BILD und legst im Klassenassistenten ne Controlvariable(vom Typ CStatic) c_Bild dafür an.
Und an der Stelle wo du dann meinst dass das Bild auf das Static Feld gezeichnet werden soll fügst du dann,im einfachsten Fall, folgenden Code ein:

C++:
    Gdiplus::Image image(L"DeinBild.tiff");
    Gdiplus::Graphics g((c_Bild.GetDC())->m_hDC);
    g.DrawImage(&image,Gdiplus::Point(0,0));



Das ist dann wie gesagt der einfachste Fall und da die Variablen image und g lokal sind ist dein Image beim nächsten neuzeichnen wieder weg aber das ist dann schonmal nen Grundgerüst mit dem du experimentieren kannst.
Im Normalfall wirst du sicherlich in der Dialogklasse Variablen für Graphics und Image anlegen und diese im Konstruktor initialisieren(Image::FromFile,Graphics::FromHWND etc.).

Unterm Strich würde ich meinen Arsch darauf verwetten dass Image intern auch IPicture nutzt..... .

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 17.02.2006 um 00:19 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
17.02.2006, 07:57 Uhr
kleineSchildy



Hallo Spacelord,

ein paar Antworten und ein paar Fragen

1. Ich arbeite unter Win2k mit VC++ 6.0!
2. Woher weiß ich, ob ich ein Plattform SDK installiert habe?

Zumal habe ich arge Probleme deine Code-Schnipsel zuzuordnen Hier mal eine Übersicht an Methoden, die ich so habe:


C++:
//Methoden in Bild_ViewerApp
  Bild_ViewerApp()
  InitInstance()

//Methoden in Bild_ViewerDlg
  Bild_ViewerDlg(...)
  DoDataExchange(...)
  OnInitDialog()
  OnPaint()
  OnSysCommand(...)
  //Methode, wo das Bild gezeigt werden soll
  OnDirectory()



Ich weiß, ich stell mich wahrscheinlich besonders dusslig an

Vielen Dank schonmal für deine Hilfe.

Viele Grüße
Jana
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
17.02.2006, 11:09 Uhr
kleineSchildy



Also ich habe jetzt ein bissel rumprobiert und auch SDK installiert, leider bekomme ich beim Kompilieren nur Fehlermeldungen:


C++:
:\program files\microsoft platform sdk\include\gdiplusinit.h(32) : error C2065: 'ULONG_PTR' : undeclared identifier
c:\program files\microsoft platform sdk\include\gdiplusinit.h(32) : error C2065: 'token' : undeclared identifier
c:\program files\microsoft platform sdk\include\gdiplusinit.h(32) : error C2165: 'left-side modifier' : cannot modify pointers to data
c:\program files\microsoft platform sdk\include\gdiplusinit.h(32) : error C2071: 'NotificationHookProc' : illegal storage class
c:\program files\microsoft platform sdk\include\gdiplusinit.h(33) : error C2146: syntax error : missing ')' before identifier 'token'
c:\program files\microsoft platform sdk\include\gdiplusinit.h(33) : error C2165: 'left-side modifier' : cannot modify pointers to data
c:\program files\microsoft platform sdk\include\gdiplusinit.h(33) : error C2071: 'NotificationUnhookProc' : illegal storage class
c:\program files\microsoft platform sdk\include\gdiplusinit.h(33) : error C2059: syntax error : ')'
c:\program files\microsoft platform sdk\include\gdiplusinit.h(86) : error C2059: syntax error : 'const'
c:\program files\microsoft platform sdk\include\gdiplusinit.h(95) : error C2146: syntax error : missing ')' before identifier 'token'
c:\program files\microsoft platform sdk\include\gdiplusinit.h(95) : warning C4229: anachronism used : modifiers on data are ignored
c:\program files\microsoft platform sdk\include\gdiplusinit.h(95) : error C2182: 'GdiplusShutdown' : illegal use of type 'void'
c:\program files\microsoft platform sdk\include\gdiplusinit.h(95) : error C2059: syntax error : ')'
c:\program files\microsoft platform sdk\include\gdiplusflat.h(2639) : warning C4229: anachronism used : modifiers on data are ignored
c:\program files\microsoft platform sdk\include\gdiplusflat.h(2639) : error C2440: 'initializing' : cannot convert from 'int' to 'enum Gdiplus::Status'
        Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast)
c:\program files\microsoft platform sdk\include\gdiplusflat.h(2644) : error C2146: syntax error : missing ')' before identifier 'token'
c:\program files\microsoft platform sdk\include\gdiplusflat.h(2644) : warning C4229: anachronism used : modifiers on data are ignored
c:\program files\microsoft platform sdk\include\gdiplusflat.h(2644) : error C2182: 'GdiplusNotificationUnhook' : illegal use of type 'void'
c:\program files\microsoft platform sdk\include\gdiplusflat.h(2644) : error C2059: syntax error : ')'



Da scheine ich GDI+ noch nicht richtig ein gebunden zu haben Ich weiß nun aber nicht weiter...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
17.02.2006, 11:44 Uhr
Spacelord
Hoffnungsloser Fall


Hallo kleineSchildy,
wo genau hast du denn den gdi Header eingebunden?

Mfg Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: