AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein pf8Bit seltsames aussehen der Palette
Thema durchsuchen
Ansicht
Themen-Optionen

pf8Bit seltsames aussehen der Palette

Ein Thema von EWeiss · begonnen am 10. Apr 2016 · letzter Beitrag vom 18. Apr 2016
Antwort Antwort
Seite 2 von 4     12 34      
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: pf8Bit seltsames aussehen der Palette

  Alt 11. Apr 2016, 09:20
Zitat:
Kannst du bitte grad sagen welcher Typ es ist?
Ich hänge mal das Beispiel an da ich jetzt nicht genau weiß welchen Typ ihr meint.

Mit ScanLine habe ich ein generelles Problem
In Verbindung mit der Palette funktioniert das nicht mehr. (Ab einer bestimmten Größe einer Datei)

Bei Pixel geht es allerdings werden hier die Farben falsch dargestellt in Verbindung mit HSLtoRGB.

gruss

Geändert von EWeiss (11. Apr 2016 um 10:34 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#12

AW: pf8Bit seltsames aussehen der Palette

  Alt 11. Apr 2016, 09:33
Wie vermutet.
Delphi-Quellcode:
  ScanLines: TArray<PRGBTriple>;
  P: PRGBTriple;
Bei pf8Bit hast du keine RGBTriples mehr, sondern nur noch 1 Byte pro Pixel (8 Bit halt). Die richtigen Typen wären also:
Delphi-Quellcode:
  ScanLines: TArray<PByte>;
  P: PByte;
Das hier:if Assigned(P) then HSLtoRGB(H, S, L, P^.rgbtRed, P^.rgbtGreen, P^.rgbtBlue); geht dann aber natürlich auch nicht mehr! Wenn du ein Bitmap mit Palette hast, hast du keine Farbwerte mehr in den Pixeln stehen, sondern einen Index in die Palette!! Statt also die Farben in die Pixeldaten zu schreiben, musst du dir für jeden Pixel eine Farbe aus der Palette aussuchen und deren Index in die Pixeldaten schreiben. Bitmaps mit Paletten sind da anders als die ohne.
"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
EWeiss
(Gast)

n/a Beiträge
 
#13

AW: pf8Bit seltsames aussehen der Palette

  Alt 11. Apr 2016, 09:42
Zitat:
Bei pf8Bit hast du keine RGBTriples mehr, sondern nur noch 1 Byte pro Pixel (8 Bit halt). Die richtigen Typen wären also:
Hab ich mir schon gedacht das etwas im argen ist.. Sind halt Dinge die man wissen muss
Wie schon gesagt zu wenig Erfahrung mit der Handhabung von ScanLine.

Zitat:
geht dann aber natürlich auch nicht mehr!
Ja. Wie du schon sagst, da es keine Farbwerte mehr gibt in den Pixeln.

Muss mal sehn wie ich das berechne zu mal das Bitmap jetzt auch noch umgekehrt gezeichnet wird.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

AW: pf8Bit seltsames aussehen der Palette

  Alt 11. Apr 2016, 10:04
Boahh das dauert aber viel länger als mit den RGB Farben.

Delphi-Quellcode:
      if bScanLines then
      begin
        QueryPerformanceCounter(timeDraw0);
        k := BuffBMP.Height - i - 1;
        P := BuffBMP.ScanLine[k];

        Move(P[OffsetX], P[0], (BuffBMP.Width - OffsetX));

        for m := 0 to pred(OffsetX) do
          P[BuffBMP.Width - OffsetX + m] := Value;

        QueryPerformanceCounter(timeDraw1);
        timeDraw := timeDraw + (timeDraw1-timeDraw0);
      end
Da muss ich wohl noch was Tüfteln

gruss

Geändert von EWeiss (11. Apr 2016 um 10:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#15

AW: pf8Bit seltsames aussehen der Palette

  Alt 11. Apr 2016, 10:25
Okay war bei Scanline nicht das Problem dass du in erster Linie vertikal zeichnen musst?
Wie wärs wenn du das Bitmap um 90° gedreht zeichnest. Also statt

|||||||||||||||||||||||||||||||||||||||||

so:

_
_
_
_
_
_
_

Und dann kannst du das Bitmap per PlgBlt um 90° gedreht dahin zeichnen wo es auftauchen soll.
ScanLine würde ich dann wieder mit pf32Bit versuchen.

Delphi-Quellcode:
// Malt das Bitmap um 90° nach rechts gedreht auf ein Canvas
procedure DrawRotated90(ABitmap: TBitmap; ACanvas: TCanvas; AX, AY: Integer);
var RotatePoints: Array[0..2] of TPoint;
begin
  RotatePoints[0] := Point(ABitmap.Height+AX, AY);
  RotatePoints[1] := Point(ABitmap.Height+AX, ABitmap.Width+AY);
  RotatePoints[2] := Point(AY, AY);
  PlgBlt(ACanvas.Handle, RotatePoints[0], ABitmap.Canvas.Handle, 0, 0, ABitmap.Width, ABitmap.Height, 0, 0, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DrawRotated90(Image1.Picture.Bitmap, Canvas, 10, 10);
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#16

AW: pf8Bit seltsames aussehen der Palette

  Alt 11. Apr 2016, 10:30
Zitat:
ScanLine würde ich dann wieder mit pf32Bit versuchen.
Das geht leider nicht weil ich eine pf8Bit Palette verwende.
Die Farben der Palette werden also nicht geändert wenn ich pf32Bit verwende.


gruss

Geändert von EWeiss (11. Apr 2016 um 16:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#17

AW: pf8Bit seltsames aussehen der Palette

  Alt 11. Apr 2016, 10:42
Ich rede ja davon in diesem Fall KEINE Palette mehr zu benutzen.
Die Palette benutzt du doch nur weil du hoffst dass es damit schneller geht oder?

Meine neue Idee für "schneller" ist halt 32-Bit "falschrum" malen und dann drehen.
Siehe meinen vorherigen Post
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#18

AW: pf8Bit seltsames aussehen der Palette

  Alt 11. Apr 2016, 10:54
Ich rede ja davon in diesem Fall KEINE Palette mehr zu benutzen.
Die Palette benutzt du doch nur weil du hoffst dass es damit schneller geht oder?

Meine neue Idee für "schneller" ist halt 32-Bit "falschrum" malen und dann drehen.
Siehe meinen vorherigen Post
Nein diese benutze ich um zur Laufzeit die Farben des Spectrogram zu ändern.
Vordefinierte Farben also.
Vorherige Version mit der Geschwindigkeit war ausreichend nur nach der Umstellung auf Paletten muss ich diese wieder optimieren
was die Geschwindigkeit angeht incl. der korrekten Farben Zuweisung.

gruss

Geändert von EWeiss (11. Apr 2016 um 10:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#19

AW: pf8Bit seltsames aussehen der Palette

  Alt 11. Apr 2016, 10:57
Nagut dann eben 8-Bit. Sollte aber vom Prinzip genauso funktionieren.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#20

AW: pf8Bit seltsames aussehen der Palette

  Alt 11. Apr 2016, 11:09
Nagut dann eben 8-Bit. Sollte aber vom Prinzip genauso funktionieren.
Sorry nein weil es nicht verdreht ist und eine Rotation von 90 Grad in dem Fall nichts bringt.
Es ist umgekehrt.

Zitat:
Okay war bei Scanline nicht das Problem dass du in erster Linie vertikal zeichnen musst?
Ich zeichne vertikal.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 04:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz