AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Vielfaches der Zahl 4 an Pixel einer Bitmap

Vielfaches der Zahl 4 an Pixel einer Bitmap

Ein Thema von Gyrospeter · begonnen am 19. Nov 2019 · letzter Beitrag vom 19. Nov 2019
Antwort Antwort
Gyrospeter

Registriert seit: 11. Apr 2019
40 Beiträge
 
Delphi XE2 Professional
 
#1

Vielfaches der Zahl 4 an Pixel einer Bitmap

  Alt 19. Nov 2019, 09:52
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;
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
435 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Vielfaches der Zahl 4 an Pixel einer Bitmap

  Alt 19. Nov 2019, 10:21
Zunächst mal würde ich deine Bedingung anders aufbauen:
Delphi-Quellcode:
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;
Sonst verzerrst du im schlimmsten Fall das Bild (z.B. Breite wird angepasst aber Höhe bleibt, da du beides getrennt betrachtest).

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.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas (19. Nov 2019 um 11:19 Uhr)
  Mit Zitat antworten Zitat
Gyrospeter

Registriert seit: 11. Apr 2019
40 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Vielfaches der Zahl 4 an Pixel einer Bitmap

  Alt 19. Nov 2019, 10:36
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)?
Beides sollte betrachtet werden, also die Höhe und die Breite. Passt zb. die Breite schon von Haus aus durch die Selektion, dann bleibt diese unverändert und lediglich die Höhe wird nach oben oder unten hin, je nachdem ob man oben oder unten näher an einem Vielfachen ist, verändert
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.616 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Vielfaches der Zahl 4 an Pixel einer Bitmap

  Alt 19. Nov 2019, 10:54
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;
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Gyrospeter

Registriert seit: 11. Apr 2019
40 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Vielfaches der Zahl 4 an Pixel einer Bitmap

  Alt 19. Nov 2019, 11:08
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;
Vielen lieben Dank, funktioniert!

Wäre da alleine wohl schwerlich draufgekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf