trichview.com

trichview.support




the correspond the text and the lines


Return to index


Author

Message

stormy

Posted: 01/11/2003 11:06:40


I have draw a line on the canvas of richView and record the

postion of the line .

then ,i draw the line on the printcanvas  in onPreparePaint event .

I have transformed  the position of the line between

the screen resolution and  the print resolution .

and found the line can not correspond to the text exactly.


I have set the  RVEditor.MaxTextWidth = pageWidht .the pageWidth is

calculate by the

follow procedure .


in one word ,I want to find a new way to simulate WYSWYG.

can u give me some advice about  how to realize page divide and get the

position of the text .





//The procedure below returns width and height of printable area, converted

to

//screen resolution


procedure GetScreenPageSize(RVPrint: TRVPrint;

  var Width, Height: Integer);

var

  DC: HDC;

  phoX, phoY, phW, phH, lpy, lpx, LM, TM, RM, BM: Integer;

begin

  DC := RV_GetPrinterDC; // from PtblRV unit


  Width := GetDeviceCaps(DC, HORZRES);

  Height := GetDeviceCaps(DC, VERTRES);


  lpy := GetDeviceCaps(DC, LOGPIXELSY);

  lpx := GetDeviceCaps(DC, LOGPIXELSX);


  phoX := GetDeviceCaps(DC, PHYSICALOFFSETX);

  phoY := GetDeviceCaps(DC, PHYSICALOFFSETY);

  phW := GetDeviceCaps(DC, PHYSICALWIDTH);

  phH := GetDeviceCaps(DC, PHYSICALHEIGHT);


  LM := MulDiv(RVPrint.LeftMarginMM, 5 * lpx, 127) - phoX;

  TM := MulDiv(RVPrint.TopMarginMM, 5 * lpy, 127) - phoY;

  RM := MulDiv(RVPrint.RightMarginMM, 5 * lpx, 127) - (phW - (phoX +

Width));

  BM := MulDiv(RVPrint.BottomMarginMM, 5 * lpy, 127) - (phH - (phoY +

Height));


  if LM < 0 then

    LM := 0;

  if TM < 0 then

    TM := 0;

  if RM < 0 then

    RM := 0;

  if BM < 0 then

    BM := 0;


  dec(Width, LM + RM);

  dec(Height, TM + BM);


  DeleteDC(DC);


  DC := GetDC(0);


  Width := MulDiv(Width, GetDeviceCaps(DC, LOGPIXELSX), lpx);

  Height := MulDiv(Height, GetDeviceCaps(DC, LOGPIXELSY), lpy);


  ReleaseDC(0, DC);

end;







Powered by ABC Amber Outlook Express Converter