AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Was kann Paint, was ich nicht kann? ( Clipboard pasten )
Thema durchsuchen
Ansicht
Themen-Optionen

Was kann Paint, was ich nicht kann? ( Clipboard pasten )

Ein Thema von DGL-luke · begonnen am 17. Jun 2006 · letzter Beitrag vom 1. Sep 2006
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#1

Was kann Paint, was ich nicht kann? ( Clipboard pasten )

  Alt 17. Jun 2006, 19:36
Hallo,

wenn ich in GIMP einen Bildbereich in die Zwischenablage kopiere, kann MS Paint den wunderbar einfügen. Mein Programm aber nicht:

Delphi-Quellcode:
procedure TFMain.SBPasteClick(Sender: TObject);
var pic: TPicture;
    b: TBitmap;
begin
  pic := TPicture.Create;

  {if Clipboard.HasFormat(CF_PICTURE) then
    begin
      Showmessage('CF_PICTURE');
      pic.Assign(Clipboard);
    end
  else}
 if Clipboard.HasFormat(CF_BITMAP) then
    begin
      Showmessage('CF_BITMAP');
      pic.Bitmap.Assign(Clipboard);
    end
  {else if Clipboard.HasFormat(CF_METAFILEPICT) then
    begin
      ShowMessage('CF_METAFILEPICT');
      pic.Metafile.Assign(Clipboard);
    end}

  else
    Exit;

  LoadImage(pic);
  pic.Free;
end;
Folgende Meldung kommt:

Zitat:
---------------------------
JPEG-Kompressor
---------------------------
Format der Zwischenablage wird nicht unterstützt.
---------------------------
OK
---------------------------


Naja, die Frage steht im Titel...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )

  Alt 17. Jun 2006, 19:56
Ich sehe da 2 Möglichkeiten: Die JPEG Kompression von GiMP ist "komisch anders" bzw. nicht von TJPEGImage unterstützt (siehe Titel der MessageBox) oder das Format des ClipBoards ist komisch. Dort könnte ja vllt. mal helfen heraus zu bekommen, wie denn das Format heisst, in welchem das Bild in der Zwischenablage vorliegt:

Delphi-Quellcode:
Uses
  Windows;

...

Function NameOfClipBoardFormat(Const AFormatId: LongWord): String;
Var
  lStr: String;
Begin
  SetLength(lStr, 2049);
  SetLength(lStr, GetClipBoardFormatName(AFormatId, PChar(lStr), 2048));
  Result := lStr;
End;
EDIT: Über die Eigenschaft FormatCount und Formats[] des TClipBoard's bzw. der globalen Instanz ClipBoard kannst du auch mal eroieren, welche Formate GiMP denn in die Zwischenablage ablegt, vllt. findest du ja noch ein besseres als das bisher selektierte...
EDIT2: GetAsHandle() ist die Methode von TClipBoard um ein bestimmtes Format zu erhalten, wenn du dich im Formats[] Array für ein anderes entschieden hast.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )

  Alt 17. Jun 2006, 20:01
Da gehts nicht um JPEGs

Das Format ist CF_BITMAP.

Wenn du dir meinen Code angesehen hättest, wäre dir das doch wohl auch aufgefallen

ich kann ja gerne mal die datei anhängen, um dies geht, sollte einigen bekannt vorkommen...

//Dein EDIT: Naja... CF_BITMAP sollte eigentlcih doch genügen...

EDIT: wie kann ich denn sicherstellen, dass das tpicture.bitmap auch mein CF_BITMAP format lädt?
EDIT2: Wir unterhalten uns hier jetzt nur noch über Edits, oder?
Angehängte Grafiken
Dateityp: bmp paste_clipboard24_212.bmp (1,6 KB, 212x aufgerufen)
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )

  Alt 17. Jun 2006, 20:04
Zitat von DGL-luke:
Da gehts nicht um JPEGs

Das Format ist CF_BITMAP.

Wenn du dir meinen Code angesehen hättest, wäre dir das doch wohl auch aufgefallen
Naja, dein Code sagt nicht viel, ausser das du nur noch mit Bitmaps umgehen kannst - und das Format scheint wohl gerade nicht kompatibel zu sein, oder?

Und wenn es nicht um JPEG's geht, warum hat dann die Fehlermeldung in der Caption "JPEG-Kompressor"?? Was meinst du denn, wie ich bei ausgeklammerten Code auf JPEG komme? Doof bin ich nicht... (dachte ich bisher...)
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )

  Alt 17. Jun 2006, 20:08
ja, is klar ^^ es ist ja nicht der ganze code auskommentiert

also, im moment gehts erstmal nur um bitmaps.

Wo tu ich das Handle denn hin, das ich von GetAsHandle kriege?

EDIT: Code sieht jetzt so aus:

Delphi-Quellcode:
if Clipboard.HasFormat(CF_BITMAP) then
    begin
      Showmessage('CF_BITMAP');
      h := Clipboard.GetAsHandle(CF_BITMAP);
      pic.Bitmap.LoadFromClipboardFormat(CF_BITMAP,h,CLipboard.GetAsHandle(CF_PALETTE));
    end
Fehler bleibt gleich...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )

  Alt 17. Jun 2006, 20:36
Das ist dann zumindest komisch. Im Normalfall sollte es klappen - aber ich bin mir nicht sicher, ob noch extra eine Palette mit in das ClipBoard gelegt wird - ist ja auch nicht immer nötig (siehe PixelFormat).

Ansonsten wäre noch dies möglich:

Delphi-Quellcode:
 if Clipboard.HasFormat(CF_BITMAP) then
 begin
   h := Clipboard.GetAsHandle(CF_BITMAP);
   pic.Bitmap.Handle := h;
 end;
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )

  Alt 17. Jun 2006, 20:51
ne... das gibt bei mir eine AV an 0... warum auch immer.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )

  Alt 17. Jun 2006, 23:08
Hmm, meine Glaskugel funktioniert zur Zeit wieder recht gut, glaube ich. Sie ist endlich von der Eichung zurück, daher lass mich mal aufschreiben, was ich in ihr sehen konnte:

1. h wird ordentlich befüllt mit einem Handle
2. Picture ist ungleich Nil, da vorher angelegt
3. Picture.Bitmap ist Nil, da nicht vorher angelegt
4. Es knallt beim Zugriff auf die Eigenschaft Bitmap von TPicture, da nicht vorher angelegt.
5. Mein Glaskugel munkelt, dass dies auch der Fehler vorherigen Versuche sein wird, da Methoden von Bitmap aufgerufen wurden, welche an keine Instanz gebunden waren, da Bitmap auch dort Nil war.

Du hast den Code, du hast somit auch die Macht... ... den Debugger zu benutzen und zu schauen ob meine Glaskugel Recht hatte. Nutze die Macht, Luke!
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )

  Alt 17. Jun 2006, 23:31
meine glaskugel sagt, dass wenn ein bitmap nil ist, dass es dann nicht sagen kann "Format der Zwischenablage wird nicht unterstützt."
Mir ist klar, dass eine Av bei 0 meistens ein zugriff auf einen nil-pointer ist... ich habe deswegen vorübergehend pic.bitmap durch ein zuvor erzeugtes TBitmap ersetzt:

Delphi-Quellcode:
Showmessage('CF_BITMAP');
      h := Clipboard.GetAsHandle(CF_BITMAP);
      b.Handle := h;
Knallt dann nur "woanders", also AV irgendwo.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Was kann Paint, was ich nicht kann? ( Clipboard pasten )

  Alt 18. Jun 2006, 00:13
Naja, das knallen mit einer AV ist aber ungesund und nicht normal, daher unbedingt diese erstmal abstellen würde ich raten.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz