![]() |
Re: Graphics32-Frage!!
Leider hilft auch Dein letzter Vorschlag nicht...
Es scheint wirklich so zu sein, daß bei Graphikkarten die keine 32bit- Farbtiefe darstellen können, eine Verwendung von Graphics32 nicht möglich ist??!! |
Re: Graphics32-Frage!!
sind bei der Graphics32 keine Quelltexte dabei? dann könntest du ja schauen wie der Resampling-Algorythmus aussieht
|
Re: Graphics32-Frage!!
Ich hab jetzt nochmals alles durchdebugt und es stellt ihn beim Resampling in der Draw-Methode auf...
|
Re: Graphics32-Frage!!
Aber es ist eben die Frage bei welchem Teil in der Resampling-Methode. Es muss ja versucht werden funktionen zu verwenden welche mit der aktuellen Farbtiefe zu tun haben (obwohl die aktuelle Farbtiefe eigentlich da nicht rein gehört weil es nicht um die anzeige geht)
|
Re: Graphics32-Frage!!
Delphi-Quellcode:
[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]
function BuildMappingTable(
DstLo, DstHi: Integer; ClipLo, ClipHi: Integer; SrcLo, SrcHi: Integer; Kernel: TCustomKernel): TMappingTable; var SrcW, DstW, ClipW: Integer; Filter: TFilterMethod; FilterWidth: TFloat; Scale, OldScale: TFloat; Center: TFloat; Count: Integer; Left, Right: Integer; I, J, K: Integer; Weight: Integer; begin SrcW := SrcHi - SrcLo; DstW := DstHi - DstLo; ClipW := ClipHi - ClipLo; if SrcW = 0 then begin Result := nil; Exit; end else if SrcW = 1 then begin SetLength(Result, ClipW); for I := 0 to ClipW - 1 do begin SetLength(Result[I], 1); Result[I][0].Pos := 0; Result[I][0].Weight := 256; end; Exit; end; SetLength(Result, ClipW); if ClipW = 0 then Exit; if FullEdge then Scale := DstW / SrcW else Scale := (DstW - 1) / (SrcW - 1); Filter := Kernel.Filter; FilterWidth := Kernel.GetWidth; K := 0; if Scale = 0 then begin Assert(Length(Result) = 1); SetLength(Result[0], 1); Result[0][0].Pos := (SrcLo + SrcHi) div 2; Result[0][0].Weight := 256; end else if Scale < 1 then begin OldScale := Scale; Scale := 1 / Scale; FilterWidth := FilterWidth * Scale; for I := 0 to ClipW - 1 do begin if FullEdge then Center := SrcLo - 0.5 + (I - DstLo + ClipLo + 0.5) * Scale else Center := SrcLo + (I - DstLo + ClipLo) * Scale; Left := Floor(Center - FilterWidth); Right := Ceil(Center + FilterWidth); Count := -256; for J := Left to Right do begin Weight := Round(256 * Filter((Center - J) * OldScale) * OldScale); if Weight <> 0 then begin Inc(Count, Weight); K := Length(Result[I]); SetLength(Result[I], K + 1); Result[I][K].Pos := [b]Constrain(J, SrcLo, SrcHi - 1);[/b] --> hier stellt es ihn auf!! Result[I][K].Weight := Weight; end; end; [...] |
Re: Graphics32-Frage!!
bist du mal mit F7 durchgesteppt an welcher stelle es genau knallt?
[Edit]Hab den Kommentaar im Quelltext gefunden. Wie sieht das Meckern aus? welche Meldung kommt? Kannst du mal in die Funktion/procedure/Methode "Constrain" rein steppen an welcher Stelle es dort knallt? |
Re: Graphics32-Frage!!
Delphi-Quellcode:
function Constrain(const Value, Lo, Hi: Integer): Integer;
{$IFDEF USEINLINING} begin if Value < Lo then Result := Lo else if Value > Hi then Result := Hi else Result := Value; {$ELSE} asm CMP EDX,EAX [b]db $0F,$4F,$C2 /// CMOVG EAX,EDX[/b] --> hier knallts!! CMP ECX,EAX db $0F,$4C,$C1 /// CMOVL EAX,ECX {$ENDIF} end; Mit folgender Fehlermeldung: Externe Exception C000001D |
Re: Graphics32-Frage!!
Ja hab mit F7 durchgesteppt, um an die Stelle zu kommen!!
|
Re: Graphics32-Frage!!
Der Grund wie sich später herausstellte:
Der PC konnte keine 32-bit-Farben darstellen und von daher kamen die Probleme!! Also Graphics32-Komponenten auch wirklich nur bei 32-bit-Graphikkarten verwenden!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 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