vinduer - logiske enheder til enhedsenheder

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har kæmpet med et klipproblem med et vindue med ikke-nul vindues oprindelse , fordi jeg ikke kunne indse SelectClipRgn påkrævede enhedsenheder.


Så i betragtning af at jeg har bestemt viewport oprindelsen og vinduets oprindelse som følger ...


POINT VP\_Org, WN\_Org;
GetViewportOrgEx (dc, VP\_Org);
GerWindowOrgEx (dc, WM\_Org);


og jeg har et klipområde R i logiske koordinater, hvordan konverterer man R til enhedsenheder til brug ved definering af et klipområde?


Med andre ord, hvordan forvandler jeg R, så følgende virker.


RECT R;
ClipRgn = CreateRectRgn (R.left, R.top, R.right, R.bottom)
SelectClipRgn (dc, ClipRgn)


Jeg ved, at det ligner noget


R.top = R.top - WN\_Org.y +- VP\_Org.y;


fra eksperiment men ved ikke, hvad tegn til brug for visningsporten.

Bedste reference


Du kan bruge LPtoDP-funktionen: [4]



  LPtoDP-funktionen konverterer logiske koordinater til enheden
  koordinater. Konverteringen afhænger af enhedens kortlægningstilstand
  kontekst, indstillingerne for oprindelsen og udvidelser til vinduet og
  viewport og verdenstransformationen.