Frage zur Zwischenablage

ThBa

Grünschnabel
Hallo,

ich versuche eine Bitmap Datei in die Windowszwischenablage zu kopieren was auch soweit funktioniert die zwischenablage stellt die Datei als CF_DIB und CF_BITMAP zur verfügung allerdings kann ich die DIB in einer externen C++ Anwendung nicht weiterverarbeiten.

Ich Quäle mich jetzt schon seit 5 Tagen mit dem Problem ohne irgendwelche Infos zu finden woran es liegen könnte hier mal der Code mit dem die Bitmap in die Zwischenablage kopiert wird.

Code:
Bitmap im = new Bitmap(file.Name);
            
            int width, height, x, y;
            width = 430; height = 70;
            x = 580; y = 1820;
            Bitmap croppedBitmap = new Bitmap(width, height);
            Graphics g = Graphics.FromImage(croppedBitmap);

            // Die Zeichenqualität einstellen
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.PixelOffsetMode = PixelOffsetMode.HighQuality;
            g.SmoothingMode = SmoothingMode.HighQuality;
            // Den Ausschnitt des Quellbilds auf das Ziel-Bild kopieren
            Rectangle destRect = new Rectangle(0, 0, width, height);
            
            g.DrawImage(im, destRect, x, y, width, height, GraphicsUnit.Pixel);
            g.Dispose();

            

            IDataObject dataObj = new DataObject();
            dataObj.SetData(DataFormats.Bitmap, croppedBitmap);
            Clipboard.SetData(dataObj);

Weiterverarbeitet wird der Inhalt der Zwischenablage hier

Code:
 bool bAvail= IsClipboardFormatAvailable(CF_DIB);
	if (bAvail)
	{

                ::OpenClipboard(NULL);
		 
	hBitmap = (long) GetClipboardData(CF_DIB);

	
	int nChar= ICR_RecognizeLine(Session, (long) hBitmap, 0);

	::CloseClipboard();

               }

ich bin für jede Hilfe Dankbar alternativ ginge auch ein weg mit dem ich ein DIB Handle in C# erzeugen kann bin ziemlicher C# Newbie

Thx
Thorsten
 
Zuletzt bearbeitet:
Auf den ersten Blick hätte ich folgende Idee:

Du liest dein File in ein Bitmap-Object im ein, verwendest dieses nicht weiter. Statt dessen erstellst du ein neues Bitmap, veränderst es und schreibst das ins Clipboard.
 
Hi,

Danke für Deine Antwort mein Problem ist das die Daten zwar im Clipboard landen aber von der Anwendung die die Daten weiterverarbeiten soll nicht erkant werden.

Wenn ich die Daten bspw. in PhotoImpact mit Strg v einfüge gibts keine Probleme aber die aufgerufene .dll von Recogniform meldet dass keine Daten erkannt wurden.

croppedBitmap ist die zugeschnitte Version des original Images das funktioniert auch die Zwischenablage zeigt per Clipboardviewer auch die Einlagerung des DIB und der Bitmap an.

Wenn ich die Eingefügten Daten in PhotoImpact wieder in die Zwischenablage Kopiere wird der Inhalt erkannt.

Bin für jede Idee Dankbar

Gruss
Thorsten
 
Zuletzt bearbeitet:
Zurück