|
| problem med udskrivning af roteret tekst Fra : Thomas |
Dato : 19-08-02 14:57 |
|
Hej
Jeg bruger følgende stump kode til at printe roteret text ud:
Font.PixelsPerInch:= GetDeviceCaps(Printer.Canvas.Handle,
LOGPIXELSY);
GetObject(Font.Handle, sizeof(lf), @lf);
lf.lfEscapement := 900;
lf.lfOrientation := 900;
NewFont := CreateFontIndirect(lf);
OldFont := SelectObject(Printer.Canvas.Handle, NewFont);
Printer.Canvas.TextOut(25,-2200, 'rotated text')
SelectObject(Printer.Canvas.Handle, OldFont);
DeleteObject(NewFont);
Samtidig bruger jeg en mapping mode, så jeg præcist kan styre positionen af
teksten, osv. (SetMapMode(printer.canvas.handle, MM_LOMETRIC)).
Det ser ud til at forskellige printere og forskellige udgaver af windows
fortolker "lf.lfEscapement := 900" og "lf.lfOrientation := 900" forskelligt.
Teksten bliver nogle gange roteret 90 grader med uret og andre gange 90
grader mod uret, alt efter hvilket system der printes på. Eksempel vis er
der forskel på om jeg printer fra en win2000 pro maskine og en win 95
maskine, selvom det over samme printer (den er sat til win 95 maskinen).
Problemet opstår, så vidt jeg kan finde ud af, kun når jeg bruger
ovenstående mapping mode.
Er der nogen der er bekendte med problemet og evt. har nogle forslag.
Er der en metode til at finde ud af hvor på papiret en printer har tænkt sig
at starte med at skrive fx efter man har bedt den rotatere teksten?
Venlig hilsen
Thomas
| |
Monie Jacobsen (19-08-2002)
| Kommentar Fra : Monie Jacobsen |
Dato : 19-08-02 15:42 |
|
Hej Thomas
Jeg ved ikke om jeg kan hjælpe, men jeg har en code til rotering af et image
billedet.
Hvis det har interesse for gennemlæsning for ideer, sender jeg det gerne til
dig.
MVH
Monie
"Thomas" <thomas.heath@ofir.dk> skrev i en meddelelse
news:3d60f84c$0$94848$edfadb0f@dspool01.news.tele.dk...
> Hej
>
> Jeg bruger følgende stump kode til at printe roteret text ud:
>
>
> Font.PixelsPerInch:= GetDeviceCaps(Printer.Canvas.Handle,
> LOGPIXELSY);
> GetObject(Font.Handle, sizeof(lf), @lf);
> lf.lfEscapement := 900;
> lf.lfOrientation := 900;
> NewFont := CreateFontIndirect(lf);
> OldFont := SelectObject(Printer.Canvas.Handle, NewFont);
> Printer.Canvas.TextOut(25,-2200, 'rotated text')
> SelectObject(Printer.Canvas.Handle, OldFont);
> DeleteObject(NewFont);
>
> Samtidig bruger jeg en mapping mode, så jeg præcist kan styre positionen
af
> teksten, osv. (SetMapMode(printer.canvas.handle, MM_LOMETRIC)).
>
> Det ser ud til at forskellige printere og forskellige udgaver af windows
> fortolker "lf.lfEscapement := 900" og "lf.lfOrientation := 900"
forskelligt.
> Teksten bliver nogle gange roteret 90 grader med uret og andre gange 90
> grader mod uret, alt efter hvilket system der printes på. Eksempel vis er
> der forskel på om jeg printer fra en win2000 pro maskine og en win 95
> maskine, selvom det over samme printer (den er sat til win 95 maskinen).
> Problemet opstår, så vidt jeg kan finde ud af, kun når jeg bruger
> ovenstående mapping mode.
>
> Er der nogen der er bekendte med problemet og evt. har nogle forslag.
>
> Er der en metode til at finde ud af hvor på papiret en printer har tænkt
sig
> at starte med at skrive fx efter man har bedt den rotatere teksten?
>
> Venlig hilsen
> Thomas
>
>
| |
Thomas (22-08-2002)
| Kommentar Fra : Thomas |
Dato : 22-08-02 11:38 |
|
Ellers tak jeg har løst problemet:
logfont.fbClipPrecision:=CLIP_LH_ANGLES
"Monie Jacobsen" <monie@tdcadsl.dk> wrote in message
news:3d6103ce$0$43956$edfadb0f@dspool01.news.tele.dk...
> Hej Thomas
> Jeg ved ikke om jeg kan hjælpe, men jeg har en code til rotering af et
image
> billedet.
> Hvis det har interesse for gennemlæsning for ideer, sender jeg det gerne
til
> dig.
>
> MVH
> Monie
| |
|
|