![]() |
Vielfaches der Zahl 4 an Pixel einer Bitmap
Guten Morgen liebe Delphi-Gemeinde,
ich habe hier eine Aufgabe vor mir, bei der ich mittels einer Checkbox meinen zuvor selektierten Ausschnitt einer Bitmap um ein Vielfaches von 4 anzeigen lassen möchte. Das klappt bis jetzt ganz gut, allerdings wird dabei immer aufgerundet bzw. hab ich mich für die Variante entschieden, immer den Bereich um das nächste Vielfache von 4 zu vergrößern. Im nächsten Schritt möchte ich aber, dass der Code sich entscheidet auf- oder abzurunden, je nachdem ob man nach oben oder unten hin näher ein einem Vielfachen ist. Die Lösung scheint wohl banal zu sein, allerdings komme ich nicht so wirklich drauf... über einige Denkanstöße wäre ich dankbar :)
Delphi-Quellcode:
if CheckBox1.Checked then
begin if FTexturBitmap.Width mod 4 <> 0 then cxImage1.Picture.Bitmap.Width := (cxImage1.Picture.Bitmap.Width or 3) + 1; if FTexturBitmap.Height mod 4 <> 0 then cxImage1.Picture.Bitmap.Height := (cxImage1.Picture.Bitmap.Height or 3) + 1; end; |
AW: Vielfaches der Zahl 4 an Pixel einer Bitmap
Zunächst mal würde ich deine Bedingung anders aufbauen:
Delphi-Quellcode:
Sonst verzerrst du im schlimmsten Fall das Bild (z.B. Breite wird angepasst aber Höhe bleibt, da du beides getrennt betrachtest).
if CheckBox1.Checked then
begin if (FTexturBitmap.Width mod 4 <> 0) and (FTexturBitmap.Height mod 4 <> 0) then begin cxImage1.Picture.Bitmap.Width := (cxImage1.Picture.Bitmap.Width or 3) + 1; cxImage1.Picture.Bitmap.Height := (cxImage1.Picture.Bitmap.Height or 3) + 1; end; end; Frage zum Denkanstoß: Es wäre ja Sinnvoll beides zu betrachten (Höhe und Breite; Verzerrung!) oder soll hierbei beides unabhängig betrachtet werden (keine Verzerrung)? Ich gehe aktuell mal davon aus. Ich würde davür auf funktionen schreiben, damit du Abhängigkeiten prüfen kannst und es nicht jedesmal 1:1 reinkopieren musst. |
AW: Vielfaches der Zahl 4 an Pixel einer Bitmap
Zitat:
|
AW: Vielfaches der Zahl 4 an Pixel einer Bitmap
Meine Idee:
Delphi-Quellcode:
if CheckBox1.Checked then
begin if FTexturBitmap.Width mod 4 <> 0 then cxImage1.Picture.Bitmap.Width := Round(cxImage1.Picture.Bitmap.Width / 4) * 4; if FTexturBitmap.Height mod 4 <> 0 then cxImage1.Picture.Bitmap.Height := Round(cxImage1.Picture.Bitmap.Height / 4) * 4; end; |
AW: Vielfaches der Zahl 4 an Pixel einer Bitmap
Zitat:
Wäre da alleine wohl schwerlich draufgekommen :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz