funktion um integerWert in FPColor umsetzen
-
wernkrau38
- Beiträge: 32
- Registriert: Di 8. Mär 2016, 11:46
- OS, Lazarus, FPC: Windows10
- CPU-Target: Win64
funktion um integerWert in FPColor umsetzen
Ich will in einer Pixelgrafik mit Drawpixel die Pixel-Farbe setzen.
Der Farbwert muß vom Typ FPColor sein; ich habe aber nur einen Integer-Wert.
Ich suche dafür eine Funktion.
Der Farbwert muß vom Typ FPColor sein; ich habe aber nur einen Integer-Wert.
Ich suche dafür eine Funktion.
- af0815
- Lazarusforum e. V.
- Beiträge: 7029
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: funktion um integerWert in FPColor umsetzen
Wenn du nur einen Integerwert hast - wie ist der kodiert ? Weil die Werte sind alles nur (LongInteger-)Zahlen, die Frage ist wie ist der intern kodiert (BGR, RGB,..) da FPColor ein Record ist und nicht nur eine kodierte Zahl
und somit RGBA kodiert.
Woher hast du den "Integer" Wert ?
Code: Alles auswählen
TFPColor = record
Red,Green,Blue,Alpha : word;
end;
Woher hast du den "Integer" Wert ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
wernkrau38
- Beiträge: 32
- Registriert: Di 8. Mär 2016, 11:46
- OS, Lazarus, FPC: Windows10
- CPU-Target: Win64
Re: funktion um integerWert in FPColor umsetzen
So habe ich die Lösung gefunden:
MdColor:= TColorToFPColor(StringToColor(IntToStr(XYColor )));
Panel2.canvas.drawPixel(XS, YSH - YS, MdColor);
MdColor:= TColorToFPColor(StringToColor(IntToStr(XYColor )));
Panel2.canvas.drawPixel(XS, YSH - YS, MdColor);
Re: funktion um integerWert in FPColor umsetzen
Diese komplizierte Mehrfachumwandlung sieht etwas unbeholfen aus.wernkrau38 hat geschrieben: Do 11. Dez 2025, 11:18 So habe ich die Lösung gefunden:
MdColor:= TColorToFPColor(StringToColor(IntToStr(XYColor )));
Panel2.canvas.drawPixel(XS, YSH - YS, MdColor);
Wenn du uns erklären würdest, was dein "Integerwert" genau bedutet, könnte man das sicher besser machen.
af0815 hatte dich auch schon darum gebeten.
- Zvoni
- Beiträge: 488
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: funktion um integerWert in FPColor umsetzen
Da er StringToColor mit IntToStr verwendet, wird sein Integer wahrscheinlich irgendwie so aussehentheo hat geschrieben: Do 11. Dez 2025, 12:16Diese komplizierte Mehrfachumwandlung sieht etwas unbeholfen aus.wernkrau38 hat geschrieben: Do 11. Dez 2025, 11:18 So habe ich die Lösung gefunden:
MdColor:= TColorToFPColor(StringToColor(IntToStr(XYColor )));
Panel2.canvas.drawPixel(XS, YSH - YS, MdColor);
Wenn du uns erklären würdest, was dein "Integerwert" genau bedutet, könnte man das sicher besser machen.
af0815 hatte dich auch schon darum gebeten.
25500127, wobei das natürlich mal überhaupt nicht wasserdicht ist:
255001 --> Ist das jetzt 255 00 1 oder 25 50 01 ?
Hätte eher IntToHex verwendet, weil das sowieso nen String zurückgibt.
Ist auch viel einfacher für Plausicheck (RGB -> 6 Stellen lang, RGBA -> 8 Stellen).
Und StringToColor erwartet entweder einen Enum-Namen "clRed" oder Hex-String in GBR-Byte-Order
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
-
wernkrau38
- Beiträge: 32
- Registriert: Di 8. Mär 2016, 11:46
- OS, Lazarus, FPC: Windows10
- CPU-Target: Win64
Re: funktion um integerWert in FPColor umsetzen
Dabei war ich so froh ,eine Lösung für die Farbe im Drawpixel gefunden zu haben.
Aber etwas umständlich ist es schon!
Der IntWert kommt bei einer ItrationsSchleife für eine Mandelbrotmenge zu Stande:
repeat
T := X;
X := Power(X,2) - Power(Y,2) + X0;
Y := 2 * T * Y + Y0;
Inc(Iter);
until (Sqr(X) + Sqr(Y) > 4) or (Iter = NIters);
XYColor := Iter*100000;
MdColor:= TColorToFPColor(StringToColor(IntToStr(XYColor )));
Panel2.canvas.drawPixel(XS, YSH - YS, MdColor);
Aber etwas umständlich ist es schon!
Der IntWert kommt bei einer ItrationsSchleife für eine Mandelbrotmenge zu Stande:
repeat
T := X;
X := Power(X,2) - Power(Y,2) + X0;
Y := 2 * T * Y + Y0;
Inc(Iter);
until (Sqr(X) + Sqr(Y) > 4) or (Iter = NIters);
XYColor := Iter*100000;
MdColor:= TColorToFPColor(StringToColor(IntToStr(XYColor )));
Panel2.canvas.drawPixel(XS, YSH - YS, MdColor);
- af0815
- Lazarusforum e. V.
- Beiträge: 7029
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: funktion um integerWert in FPColor umsetzen
Ohne Umweg über den String sollte es so gehen
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
iter: integer;
XYColor: LongInt;
mdColor: TFPColor;
begin
iter:= 11;
XYColor := Iter*100000;
MdColor:= TColorToFPColor(TColor(XYColor));
end;
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
wernkrau38
- Beiträge: 32
- Registriert: Di 8. Mär 2016, 11:46
- OS, Lazarus, FPC: Windows10
- CPU-Target: Win64
Re: funktion um integerWert in FPColor umsetzen
Ja, Prima; das funktioniert.
Danke Euch fürs mitdenken.
Danke Euch fürs mitdenken.
Re: funktion um integerWert in FPColor umsetzen
Den Typecast braucht es aber mMn nicht.af0815 hat geschrieben: Do 11. Dez 2025, 18:17 Ohne Umweg über den String sollte es so gehen
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject); var iter: integer; XYColor: LongInt; mdColor: TFPColor; begin iter:= 11; XYColor := Iter*100000; MdColor:= TColorToFPColor(TColor(XYColor)); end;
Kompiliert auch so:
Code: Alles auswählen
MdColor:= TColorToFPColor(XYColor); Ich verstehe die Windungen dieses Threads nicht ganz.
- af0815
- Lazarusforum e. V.
- Beiträge: 7029
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: funktion um integerWert in FPColor umsetzen
Jetzt ist es klarer woher der Wert kommt. Der Wert war das Ziel, nicht der Weg 
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).