was bringen metafiles
-
Was bringen sie?
Ob ich jetzt gleich meine Zeichenoperationen bei WM_Paint einfüge oder ich erst eine metafile erzeugge is doch egal?
-
push
-
Aber Metafiles können einmal erstellt abgespielt werden ohne, dass Du den Code erneut ausführen musst.
Sicher für ein dynamisches Programm macht es keinen Sinn, aber für das Clipboard, Datenübertragung, Drucken etc. gibt es schon viele Verwendungen.
-
ist es schneller wenn man die befehle direkt schreibt oder in eine metafile?
Und könnte man die erstellte metafile dann in einem neuen anderen Projekt wieder laden und einsetzten? das hat irgendwie kienen sinn...
-
Metafiles können im gegebenen Rahmen (siehe MSDN) wiedergegegben werden. Und ja, Die weidergabe einer Meta File kann etwas schneller sein, als die datenausgabe, die Du evtl. mit variablen daten machst. Immerhin entfällt ja die gesamte Evaluierung.
-
könnte man die erstellte metafile dann in einem neuen anderen Projekt wieder laden und einsetzten? das hat irgendwie kienen sinn...
-
Hier mal ein Beispiel weißt du warum das nicht Funktioniert?
case WM_CREATE: hdcEMF = CreateEnhMetaFile(0, 0, 0, 0); MoveToEx(hdcEMF, 0, 0, 0); LineTo(hdcEMF, 10, 40); hemf = CloseEnhMetaFile(hdcEMF); return 0 ; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rect); PlayEnhMetaFile(hdc, hemf, &rect); EndPaint(hwnd, &ps); return 0;obwohl ich LineTo 10, 40 angegeben habe zeichnet es durch den ganzen Bildschirm eine Diagonale?
-
??
-
Du hast nicht daran gedacht wie Meta Files Skaliert werden.
Schon mal einfach daran gedacht, die existierenden Samples anzusehen:
http://support.microsoft.com/kb/145999/en-us
-
danke aber warum muss ich dann bei dn LineTo usw auch noch die koordinaten festlegen wenn man sie schon übers rect festlegt?
case WM_CREATE: hdcEMF = CreateEnhMetaFile(0, 0, 0, 0); MoveToEx(hdcEMF, 0, 0, 0); LineTo(hdcEMF, 10, 40); hemf = CloseEnhMetaFile(hdcEMF); return 0 ; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rect); rect.left = 0; rect.right = 100; rect.top = 0; rect.bottom = 100; PlayEnhMetaFile(hdc, hemf, &rect); EndPaint(hwnd, &ps); return 0;ich glaube ich hab da was falsch verstanden...
-
wäre super wenn das einer weiß
-
weiß keiner wo mein fehler liegt?