Entwickler-Ecke
Multimedia / Grafik - "Grafik aus einer Grafik auslesen"
cyberbug - Sa 11.10.08 02:31
Titel: "Grafik aus einer Grafik auslesen"
Hi,
ich habe folgendes Problem:
Um nicht soviele Dateien zu haben, habe ich mir überlegt, mehrere Grafiken in eine zu machen(bzw. die Grafiken "aneinanderreiehn"). Wie kann ich jetzt aber gezielt auch nur die Grafik auslesen(den Teil der grafik), die ich brauche(quasi irgendwie temporär "ausschneiden")? Ich hoffe mein Problem ist klargeworden...
MFG cyberbug
cyberbug - Sa 11.10.08 03:23
Danke für die Antwort!
Könntest du mir erstere Lösung bitte durch Code verdeutlichen(ich verstehe das noch nicht so ganz...)?
MFG cyberbug
cyberbug - Sa 11.10.08 14:19
Danke, aber ich steh grad irgendwie auf dem Schlauch´...
Könntest du mir bitte die Funktion mit den richtigen Parametern geben, wenn ich jetzt angenommen eine datei test.jpg habe, in der zwei nebeneinanderliegende images sind(1. 32x32 2. 32x32(rechts davon)), und wenn ich zwei komponenten, Image1 und Image2 vom typ TImage habe, dass dann bild 1 in Image1 geladen wird und Bild 2 in image2?
Ich stehe wie gesagt auf dem Schlauch :cry: :( :cry: ...
MFG cyberbug
Delete - Sa 11.10.08 14:27
Du musst doch nur genau lesen, wozu die Parameter gut sind:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| BOOL BitBlt( HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop ); |
Du gibst Breite und Höhe des Zielkontext an sowie den oberen linken Zielpunkt. Dann wird ein entsprechend großer Ausschnitt ab dem angegebenen linken oberen Punkt der Quelle ins Ziel kopiert.
Moderiert von
Narses: Quote- durch C#-Tags ersetzt
cyberbug - Sa 11.10.08 14:36
Danke für deine Bemühung, aber ich verstehe es echt nicht... Und wie benutze ich dann BitBlt mit TImage?
Könnte mir das bitte einmal jemand(anhand von sehr wenig code) verdeutlichen? Daraus würde ich dass dan wahrscheinlich verstehen...
MFG cyberbug
jaenicke - Sa 11.10.08 14:41
Probiere es doch einfach aus, zeig doch was du versucht hast. Es ist auch nicht möglich es zu verstehen, wenn du es nicht versuchst. Und wenn du es versucht hättest, dann könntest du auch den entsprechenden Code einfach mal zeigen.
Auf konkrete Fragen gibts auch konkrete Antworten:
cyberbug hat folgendes geschrieben : |
Und wie benutze ich dann BitBlt mit TImage? |
Delphi-Quelltext
1:
| BitBlt(Image2.Canvas.Handle, ... |
cyberbug - Sa 11.10.08 14:56
Nun gut, danke für die Antwort. Ich habe es jetzt zumindestens ein bisschen verstanden.
ich habe folgendes geschrieben:
Delphi-Quelltext
1:
| BitBlt(Image2.Canvas.Handle, Image2.Left, Image2.Top, Image2.Width, Image2.Height, Image1.Canvas.Handle, 0, 0, SRCCOPY ); |
doch Image2 ist weiss(es soll aber der ausschnitt rein)...
Was habe ich falsch gemacht?
MFG cyberbug
Delete - Sa 11.10.08 15:03
Die Koordinaten gelten relativ zum Bitmap. So hast Du den Bereich gerade außerhalb des Bitmaps kopiert. Versuch es mal so:
Delphi-Quelltext
1:
| BitBlt(Image2.Canvas.Handle, 0, 0, Image2.Width, Image2.Height, Image1.Canvas.Handle, 0, 0, SRCCOPY ); |
cyberbug - Sa 11.10.08 15:12
Stimmt, so funktioniert es! Danke für eure Hilfe!
MFG cyberbug
PS: Das funktioniert aber doch nur mit bitmaps oder? Gibts das auch für jpg oder png?
Delete - Sa 11.10.08 15:19
Bei einem JPEG kommst Du nicht an den Device-Kontext heran (es gibt dort keinen Canvas). Also musst Du den Umweg über Konvertierung in eine Bitmap gehen. Wie das bei PNG aussieht, weiß ich im Moment auch nicht aus dem Kopf.
cyberbug - Sa 11.10.08 15:37
Danke^^
MFG cyberbug
Delete - Sa 11.10.08 16:00
Das hat aber mit der Ausgangsfrage herzlich wenig zu tun ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!