Ucze sie pakietu Asphyre i napotkalem na problemy...
Utworzylem ASDb, w ktorym jest bitmapa o rozmiarze 1680x1050. Chce ją teraz wyświetlić na panelu i w zasadzie mi sie to udaje, ale jest jeden problem... bitmapa nie wyświetla się w naturalnych rozmiarach. Bitmapa jest rzecz jasna dużo wieksza niż moj panel, dlatego zmieści sie tylko jej czesc. Nie zalezy mi aby sie cała zmieścila ale aby była nieprzeskalowana. W Onrender skleciłem taki kod:
procedure TForm1.AsphyreDevice1Render(Sender: TObject);
var texCoord:TtexCoord;
begin
texCoord.Pattern:=1;
texCoord.x:=0; texCoord.y:=0;
texCoord.w:=panel1.Width; texCoord.h:=panel1.Height;
texCoord.Flip:=false; texCoord.Mirror:=false;
AsphyreCanvas1.TexMap(AsphyreImages1[0],
pBounds4(0,0,panel1.Width,panel1.Height),
clWhite4,
texCoord,
1);
end;
Jeśli dobrze zrozumialem helpa dolączonego do Asphyre to parametr Points:TPoint4 funkcji TexMap odpowiada za skrawek ekranu na którym chcemy wyswietlac, tak wiec podałem wymiary panela. Natomiast parametr texCoord odpowiada za źródło, tzn. za jego pomocą wskazujemy jaki fragment danej bitmapy chcemy wyświetlic, tak wiec ponownie użyłem panel1.width i panel1.height aby wybrac odpowiedni fragment z mojej bitmapy.
Niestety taki kod nie wyswietla bitmapy w naturalnym rozmiarze tylko znacznie ja powieksza. Gdzie popełniam błąd? Bardzo prosze o pomoc.