Aktuelle Zeit: 25.05.2013 23:06

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: BMPin ein DC wandeln für die Routine : PLGBLT
BeitragVerfasst: 08.04.2012 17:32 
Offline

Registriert: 31.12.2009 11:58
Hallo, frohe Ostern.
Ich möchte ein Speicherbereich für eine Bitmap reservieren und dann diese in einem DC wandeln. Damit vom PLGBLT dort eine gedrehte Grafik reingeschrieben wird.
plgBlt(dc,pts,hDCBits,0,0,xx,yy,0,0,0)

Wie geht das ?

Danke.

Gruss


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: BMPin ein DC wandeln für die Routine : PLGBLT
BeitragVerfasst: 08.04.2012 21:46 
Offline
Benutzeravatar

Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte
Boardsuche kaputt?

_________________
Bild
Windows 7, 64-Bit, PB v4.51


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: BMPin ein DC wandeln für die Routine : PLGBLT
BeitragVerfasst: 10.04.2012 13:11 
Offline

Registriert: 31.12.2009 11:58
Jup, danke. Du hast recht.

Meine weitere Frage:
Wie kann man in dieser Routine den Drehmittelpunkt verlegen?

Danke.
Gruss

Code ist aus dem Forum hier:
Code:
UseJPEGImageDecoder()

Procedure RotateIm(ImNr.i, wkl.f)
  Dim Vert.POINT(2)
 
  wi.i = ImageWidth(ImNr)
  hi.i = ImageHeight(ImNr)
  ; Vert(0) = linke obere Ecke
  ; Vert(1) = rechte obere Ecke
  ; Vert(2) = linke untere Ecke der gedrehten Image berechnen
  Vert(0)\x = 0
  Vert(0)\y = 0
  Vert(1)\x = wi * Cos(wkl)
  Vert(1)\y = wi * Sin(wkl)
  Vert(2)\x = -1 * hi * Sin(wkl)
  Vert(2)\y = hi * Cos(wkl)
  ; Die nächsten 4 If - Bedingungen dienen nur dazu, das die Ecken des Bildes nicht aus den sichtbaren Bereich herausrutschen
  If Vert(1)\x < 0
    Vert(0)\x = -1 * Vert(1)\x
    Vert(2)\x - Vert(1)\x
    Vert(1)\x = 0
  EndIf
  If Vert(2)\x < 0
    Vert(0)\x = -1 * Vert(2)\x
    Vert(1)\x - Vert(2)\x
    Vert(2)\x = 0
  EndIf
  If Vert(1)\y < 0
    Vert(0)\y = -1 * Vert(1)\y
    Vert(2)\y - Vert(1)\y
    Vert(1)\y = 0
  EndIf
  If Vert(2)\y < 0
    Vert(0)\y = -1 * Vert(2)\y
    Vert(1)\y - Vert(2)\y
    Vert(2)\y = 0
  EndIf
  CreateImage(1, 700, 600)
  ihdc = StartDrawing(ImageOutput(1))
  shdc = CreateCompatibleDC_(ihdc)
  obm.i = SelectObject_(shdc, ImageID(0))
  PlgBlt_(ihdc, @Vert(0), shdc, 0, 0, wi, hi, 0, 0, 0)
  DeleteDC_(shdc)
  StopDrawing()
  CopyImage(1, 0)
EndProcedure

OpenWindow(0, 0, 0, 800, 600, "Bild drehen", #WS_OVERLAPPEDWINDOW)
ImageGadget(0, 5, 5, 700, 600, 0, #PB_Image_Border)
ButtonGadget(1, 710, 5, 85, 20, "Laden")
TextGadget(2, 710, 35, 85, 15, "Winkel")
StringGadget(3, 710, 50, 85, 20, "0")
ButtonGadget(4, 710, 75, 85, 20, "Drehen")

Repeat
  event = WaitWindowEvent()
  Select event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          dn.s = OpenFileRequester("Bild laden", "", "Bitmaps|*.bmp;*.jpg|Alle|*.*", 0)
          If dn <> ""
            If LoadImage(0, dn)
              SetGadgetState(0, ImageID(0))
            EndIf
          EndIf
        Case 4
          wkl.f = ValF(GetGadgetText(3))
          RotateIm(0, wkl)
          SetGadgetState(0, ImageID(0))
      EndSelect
  EndSelect
Until event = #PB_Event_CloseWindow


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye