Aktuelle Zeit: 12.07.2020 08:13

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Scrollbares Image im ImageGadget
BeitragVerfasst: 04.02.2020 22:19 
Offline

Registriert: 16.09.2004 11:55
Wohnort: nrw
Hallo,

ich habe folgenden Testcode:

Code:
#Fenster_w  = 640 : #Fenster_h  = 480 : #Scroll_w   = 2100 : #Scroll_h   = 2940

Define hWin.i = OpenWindow(#PB_Any, 0, 0, #Fenster_w, #Fenster_h, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)  ; neues Fenster
If hWin
  Define scroll.i = ScrollAreaGadget(#PB_Any, 0, 0, #Fenster_w, #Fenster_h, #Scroll_w, #Scroll_h)                             ; Scrollbereich 2100 x 2940 Pixel auf 640 x 480 Pixel
  Define imgad.i = ImageGadget(#PB_Any, 0, 0, #Scroll_w, #Scroll_h, #Null)                                                    ; Gadget fuer das Bild im Scrollbereich, Grösse 2100 x 2940 Pixel
  Define image.i = CreateImage(#PB_Any, #Scroll_h, #Scroll_w, 24, #Green)                                                     ; das Bild was ausschnittsweise im Scrollbereich zu sehen sein soll
  SetGadgetState(imgad, ImageID(image))                                                                                       ; Bild dem Gadget zuweisen
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
  CloseWindow(hWin)
EndIf
End

Nun sollte das Bild (hier gruener Hintergrund) genauso groß wie das Imagegadget sein. Wie man auf dem folgenden Bild sieht ist dem aber nicht so.
Vergrößer ich das Bild wird auch irgendwann das ganze Imagegadget ausgefüllt. Beide sind aber gleich groß. Was übersehe ich hier nur?

Bild

Gruß

_________________
Skylake QuadCore i7 6700K @4400MHz, MSI Z170A Gaming M5, 64 GB DDR4 @ 2133MHz, B: Ramdisk 32GB, C: Raid0 SATA SSD 1TB, D: Raid0 M2 SSD 1TB, E: Raid0 HDD 8TB, 28" 4K @ RTX2080, Win10 X64


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Scrollbares Image im ImageGadget
BeitragVerfasst: 04.02.2020 23:47 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Bei CreateImage Width und Height vertauscht 8)

Update Eventuell DPI Anpassung berechnen
Code:
#Fenster_w  = 640 : #Fenster_h  = 480 : #Scroll_w   = 2100 : #Scroll_h   = 2940

Define x, y, dx, dy

Define hWin.i = OpenWindow(#PB_Any, 0, 0, #Fenster_w, #Fenster_h, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)  ; neues Fenster
If hWin
  Define scroll.i = ScrollAreaGadget(#PB_Any, 0, 0, #Fenster_w, #Fenster_h, #Scroll_w, #Scroll_h)                             ; Scrollbereich 2100 x 2940 Pixel auf 640 x 480 Pixel
  Define imgad.i = ImageGadget(#PB_Any, 0, 0, #Scroll_w, #Scroll_h, #Null)  ; Gadget fuer das Bild im Scrollbereich, Grösse 2100 x 2940 Pixel
 
  ; DPI Mode
  dx = DesktopScaledX(#Scroll_w)
  dy = DesktopScaledY(#Scroll_h)
 
  Define image.i = CreateImage(#PB_Any, dx, dy, 24, #Green)
 
  x = DesktopScaledX(10)
  y = DesktopScaledY(10)
 
  StartDrawing(ImageOutput(image))
  DrawingMode(#PB_2DDrawing_Outlined)
  Box(x + 1, y + 1, dx - 2 * x, dy - 2 * y, #White)
  Box(x, y, dx - 2 * x, dy - 2 * y, #Black)
  StopDrawing()
 
  SetGadgetState(imgad, ImageID(image))                                                                                       ; Bild dem Gadget zuweisen
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
  CloseWindow(hWin)
EndIf
End

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Scrollbares Image im ImageGadget
BeitragVerfasst: 05.02.2020 20:15 
Offline

Registriert: 16.09.2004 11:55
Wohnort: nrw
Hallo,

Zitat:
Bei CreateImage Width und Height vertauscht

Oh je, manchmal sieht man den Wald vor lauter Bäumen nicht.

Zitat:
Eventuell DPI Anpassung berechnen

Ja das trifft auch zu.
Wenn ich "DPI-kompatibles Executable erstellen" benutze muß ich DesktopScaled nutzen.

Danke und Gruß

_________________
Skylake QuadCore i7 6700K @4400MHz, MSI Z170A Gaming M5, 64 GB DDR4 @ 2133MHz, B: Ramdisk 32GB, C: Raid0 SATA SSD 1TB, D: Raid0 M2 SSD 1TB, E: Raid0 HDD 8TB, 28" 4K @ RTX2080, Win10 X64


Nach oben
 Profil  
Mit Zitat antworten  
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: Majestic-12 [Bot] und 19 Gäste


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