Bild aus Clipboard kopieren

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

CaptainKelly

Betreff: Bild aus Clipboard kopieren

BeitragFr, Jun 18, 2010 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute!
Ich benötige für mein aktuelles Projekt einen Code der mir ein Bild aus der Zwischenablage in ein Canvas kopiert. Das Bild wird dabei mit der "Druck"-Taste aufgenommen.
Ich habe das Forum schon durchsucht und leider hat von den Sachen nichts bei mir funktioniert. Das könnte auch daran liegen, dass es mit der API-Funktion RtlMoveMemory scheinbar unter Vista Probleme gibt.
Leider geht das ganze auch nicht über das Kopieren des DesktopBuffers, da damit nicht alle Sachen auf dem Bildschirm kopiert werden(man sieht dann ein HUD nicht).

Habt Ihr eine Idee wie man das Bild auf dem Clipboard kriegt?

Vielen Dank schonmal!
CaptainKelly

Eingeproggt

BeitragFr, Jun 18, 2010 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Forensuche nach "Clipboard" brachte mir zB das hier:
https://www.blitzforum.de/foru...php?t=1276

Leider steht dort nicht explizit beschrieben wie das für Bilder geht... Musst dich mit dem Parameter bei "ExamineClipboard" spielen - bzw. in der MSDN nachlesen. (Ich bilde mir ein das schonmal gewußt zu haben aber sorry, zu lang her... finde auch grad nix in meinen Codes)

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

CaptainKelly

BeitragFr, Jun 18, 2010 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mich nochmal etwas rangesetzt und jetzt das hier zu Stande gebracht:
Code: [AUSKLAPPEN]
Function ReadClipboardPic$()
   Local cb_DIP=8
    Local Pointer, Size, BnkDescription, Char

    OpenClipboard 0
    If ExamineClipboard(cb_DIP)
      Pointer = api_GetClipboardDataVal(cb_DIP)
      Size = 320*240*4
         BnkDescription = CreateBank(Size)
      api_RtlMoveMemory1(BnkDescription, Pointer, Size)
   
      Char=0
      For x=0 To 319
         For y=0 To 239
            rgb=PeekInt(BnKDescription, Char)      
            a=(rgb And $FF000000)/$1000000
            r=(rgb And $FF0000)/$10000
            g=(rgb And $FF00)/$100
            b=(rgb And $FF)
      
            Color(r,g,b)
            Plot x,y
            Char=Char+4
    EndIf
    CloseClipboard
    FlipCanvas canvas

End Function


Jetzt zeigt der Canvas auch was an, allerdings scheint das irgendwas wahllos aus dem Speicher zu sein. Was mach ich falsch?

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group