Hallo Leute,
habe gerade mal die genannte Funktion eingestellt und getested!
Nun, Das Fenster und die Button stimmen, aber die Bilder werden kleiner angezeigt als der Button, obwohl die Bilder auf das Btn_Format resized wurden!
Was muss man machen das die Bilder wieder richtig resized werden!
Gruss ... Velindos!
Enable DPI aware executable (Windows)
Enable DPI aware executable (Windows)
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Enable DPI aware executable (Windows)
Die Bilder müssen selber richtig skaliert (ResizeImage) oder neu gezeichnet werden.
Dazu gibt es neu Desktop-Funktionen zur Abfrage der DPI. (DesktopScaledX, etc)
Dazu gibt es neu Desktop-Funktionen zur Abfrage der DPI. (DesktopScaledX, etc)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Enable DPI aware executable (Windows)
Hallo,mk-soft hat geschrieben:Die Bilder müssen selber richtig skaliert (ResizeImage) oder neu gezeichnet werden.
betrifft das nur Bilder oder auch noch andere Dinge?
Ist irgendwo offiziell dokumentiert, welche Dinge bei eingeschalteter "DPI awareness" von PB automatisch skaliert werden, und welche man selbst skalieren muss?
Re: Enable DPI aware executable (Windows)
Hallo mk-soft,
setzte die Sache unter Surface ein.
Nun die Bilder neu Skalieren?
Im meiner Software läuft das momentan so:
Nun gibt es bereits ein Beispiel ....
Irgendwie funzt auch das Lesen des Desktop unter X2 = DesktopMouseX() nicht mehr etc. Der Wert schneidet in meinen Fall versetzt aus oder beim Fensterklick ist er daneben!
Gruss ... Velindos!
setzte die Sache unter Surface ein.
Nun die Bilder neu Skalieren?
Im meiner Software läuft das momentan so:
Code: Alles auswählen
; Hole Desktop Nr
Desk_Anzahl = ExamineDesktops()
; Hole Desktop
Reader_DesktopHoeheY = DesktopHeight(Desk_Reader_Nr)
; Hole KopfzeilenFaktor
Reader_KopfzeilenFaktor.f = Reader_DesktopHoeheY * 0.0648148148148148
; KopfzeilenHoehe
Reader_KopfzeilenHoehe = Int(Reader_KopfzeilenFaktor)
; Image Resized und die sind dann die hälfte
Img_ListEbenen = CatchImage(#PB_Any,?Img_ListEbenen)
Img_ListEbenen =ResizeImage(#Img_ListEbenen,Reader_KopfzeilenHoehe,Reader_KopfzeilenHoehe,#PB_Image_Smooth)
Irgendwie funzt auch das Lesen des Desktop unter X2 = DesktopMouseX() nicht mehr etc. Der Wert schneidet in meinen Fall versetzt aus oder beim Fensterklick ist er daneben!
Gruss ... Velindos!
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Enable DPI aware executable (Windows)
Wie es aus sieht must du die Desktop Position noch umrechnen.
Dazu gibt des die Funktion DesktopUnscaledX().
Dazu gibt des die Funktion DesktopUnscaledX().
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Enable DPI aware executable (Windows)
Wie ich es sehe müssen die Bilder immer selber skaliert werden.Nino hat geschrieben:Hallo,mk-soft hat geschrieben:Die Bilder müssen selber richtig skaliert (ResizeImage) oder neu gezeichnet werden.
betrifft das nur Bilder oder auch noch andere Dinge?
Ist irgendwo offiziell dokumentiert, welche Dinge bei eingeschalteter "DPI awareness" von PB automatisch skaliert werden, und welche man selbst skalieren muss?
Code: Alles auswählen
;-TOP
Procedure LoadImageDPI(Image, File.s)
Protected Result
Result = LoadImage(Image, File)
If Result
If Image = #PB_Any
ResizeImage(Result, DesktopScaledX(ImageWidth(Result)), DesktopScaledY(ImageHeight(Result)))
Else
ResizeImage(Image, DesktopScaledX(ImageWidth(Image)), DesktopScaledY(ImageHeight(Image)))
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Procedure CatchImageDPI(Image, *Memory, Size)
Protected Result
If Size
Result = CatchImage(Image, *Memory, Size)
Else
Result = CatchImage(Image, *Memory)
EndIf
If Result
If Image = #PB_Any
ResizeImage(Result, DesktopScaledX(ImageWidth(Result)), DesktopScaledY(ImageHeight(Result)))
Else
ResizeImage(Image, DesktopScaledX(ImageWidth(Image)), DesktopScaledY(ImageHeight(Image)))
EndIf
EndIf
ProcedureReturn Result
EndProcedure
If OpenWindow(0, 0, 0, 200, 100, "ButtonImage", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If LoadImageDPI(0, #PB_Compiler_Home + "/Examples/Sources/Data/PureBasic.bmp")
ButtonImageGadget(0, 10, 10, 180, 50, ImageID(0))
EndIf
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive