亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? printer.htm

?? 對于學習很有幫助
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
  Header := MemAlloc(HeaderSize);
  Bits := MemAlloc(BitsSize);
  try
    GetDIB(ABitmap.Handle, ABitmap.Palette, Header^, Bits^);
    StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top,
        DestRect.Right, DestRect.Bottom,
        0, 0, ABitmap.Width, ABitmap.Height, Bits,TBitmapInfo(Header^),
        DIB_RGB_COLORS, SRCCOPY);
    { you might want to try DIB_PAL_COLORS instead, but this is well
      beyond the scope of my knowledge. }
  finally
    MemFree(Header, HeaderSize);
    MemFree(Bits, BitsSize);
  end;
end;

{ Print a Bitmap using the whole Printerpage }
procedure PrintBitmap(ABitmap: TBitmap);
var
  relheight, relwidth: integer;
begin
  screen.cursor := crHourglass;
  Printer.BeginDoc;
  if ((ABitmap.width / ABitmap.height) > (printer.pagewidth /printer.pageheight)) then
  begin
    { Stretch Bitmap to width of Printerpage }
    relwidth := printer.pagewidth;
    relheight := MulDiv(ABitmap.height, printer.pagewidth,ABitmap.width);
  end else
  begin
    { Stretch Bitmap to height of Printerpage }
    relwidth := MulDiv(ABitmap.width, printer.pageheight, ABitmap.height);
    relheight := printer.pageheight;
  end;
  DrawImage(Printer.Canvas, Rect(0, 0, relWidth, relHeight), ABitmap);
  Printer.EndDoc;
  screen.cursor := crDefault;
end;
</PRE><HR>

<!---------------------------------------------------------------------------------------------------------------------------------------------------->
<P><H1><A NAME="printer11">How to print exact sizes<IMG SRC="../images/new.gif" WIDTH=28 HEIGHT=11 BORDER=0 ALT=" [NEW]"></P></A></H1>
<P><I>From: "Earl F. Glynn" &lt;EarlGlynn@worldnet.att.net&gt;</I></P>

The following sample UNIT shows how to use GetDeviceCaps to obtain
much information about your printer, including the HORZRES and
VERTRES (horizontal and vertical resolution in pixels) and the dimensions
in
inches.  Or, use the LOGPIXELSX and LOGPIXELSY values for the dot 
density/inch in the horizontal and vertical dimensions. <p>

In addition to the info about a printer, the example below shows how to
print a bitmap in its "natural" size, or at a specific location with a
specific
size on the page.  I think this should give you some clues about how
to solve your problem.<p>

The example also shows to plot a sine wave at a particular location with a
given size (all in inches).  Since we in the U.S. are incapable of
converting
inches to metric (I jest), you'll have to figure that part out yourself.<p>
 

<HR><PRE>unit Tstpr2fm;

{Sample usage of Printer object from TPrinter Unit.  Use verbose style
below
 to simplify future reference.

 Shows values returned by GetDeviceCaps Windows API function.

 efg, 19 September 1996}

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Print: TButton;
    Image1: TImage;
    procedure PrintClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
  USES
    Printers;

  {WINAPI GetDeviceCaps Constants from C++ windows.h and wingdi.h}

  {The indivdual constants are defined here for reference only}
  CONST
     DRIVERVERSION   =   0;
     TECHNOLOGY      =   2;  {See windows.h for mask values}
     HORZSIZE        =   4;
     VERTSIZE        =   6;
     HORZRES         =   8;
     VERTRES         =  10;
     BITSPIXEL       =  12;
     PLANES          =  14;
     NUMBRUSHES      =  16;
     NUMPENS         =  18;
     NUMMARKERS      =  20;
     NUMFONTS        =  22;
     NUMCOLORS       =  24;
     PDEVICESIZE     =  26;
     CURVECAPS       =  28;  {See windows.h for mask values}
     LINECAPS        =  30;  {See windows.h for mask values}
     POLYGONALCAPS   =  32;  {See windows.h for mask values}
     TEXTCAPS        =  34;  {See windows.h for mask values}
     CLIPCAPS        =  36;  {See windows.h for mask values}
     RASTERCAPS      =  38;  {See windows.h for mask values}
     ASPECTX         =  40;
     ASPECTY         =  42;
     ASPECTXY        =  44;

     LOGPIXELSX      =  88;
     LOGPIXELSY      =  90;

     SIZEPALETTE     = 104;
     NUMRESERVED     = 106;
     COLORRES        = 108;

     PHYSICALWIDTH   = 110;   {See wingdi.h for definition}
     PHYSICALHEIGHT  = 111;   {See wingdi.h for definition}
     PHYSICALOFFSETX = 112;   {See wingdi.h for definition}
     PHYSICALOFFSETY = 113;   {See wingdi.h for definition}
     SCALINGFACTORX  = 114;   {See wingdi.h for definition}
     SCALINGFACTORY  = 115;   {See wingdi.h for definition}

    DeviceCapsString:  ARRAY[1..34] OF STRING =
     ('DRIVERVERSION',  'TECHNOLOGY',     'HORZSIZE',
      'VERTSIZE',       'HORZRES',        'VERTRES',
      'BITSPIXEL',      'PLANES',         'NUMBRUSHES',
      'NUMPENS',        'NUMMARKERS',     'NUMFONTS',
      'NUMCOLORS',      'PDEVICESIZE',    'CURVECAPS',
      'LINECAPS',       'POLYGONALCAPS',  'TEXTCAPS',
      'CLIPCAPS',       'RASTERCAPS',     'ASPECTX',
      'ASPECTY',        'ASPECTXY',       'LOGPIXELSX',
      'LOGPIXELSY',     'SIZEPALETTE',    'NUMRESERVED',
      'COLORRES',       'PHYSICALWIDTH',  'PHYSICALHEIGHT',
      'PHYSICALOFFSETX','PHYSICALOFFSETY','SCALINGFACTORX',
      'SCALINGFACTORY');

   DeviceCapsIndex:  ARRAY[1..34] OF INTEGER =
     (  0,   2,   4,   6,   8,  10,  12,  14,  16,  18,
       20,  22,  24,  26,  28,  30,  32,  34,  36,  38,
       40,  42,  44,  88,  90, 104, 106, 108, 110, 111,
      112, 113, 114, 115);

  {$R *.DFM}

FUNCTION iPosition(const i:  INTEGER):  INTEGER;
BEGIN
  RESULT := Integer(i * LongInt(Printer.PageWidth)  DIV 1000)
END {iPosition};


FUNCTION jPosition(const j:  INTEGER):  INTEGER;
BEGIN
  RESULT := Integer(j * LongInt(Printer.PageHeight) DIV 1000)
END {jPosition};


procedure TForm1.PrintClick(Sender: TObject);
  VAR
    DestinationRectangle:  TRect;
    GraphicAspectRatio  :  DOUBLE;
    i                   :  INTEGER;
    j                   :  INTEGER;
    iBase               :  INTEGER;
    iPixelsPerInch      :  WORD;
    jBase               :  INTEGER;
    jDelta              :  INTEGER;
    jPixelsPerInch      :  WORD;
    OffScreen           :  TBitMap;
    PixelAspectRatio    :  DOUBLE;
    SourceRectangle     :  TRect;
    TargetRectangle     :  TRect;
    value               :  INTEGER;
    x                   :  DOUBLE;
    y                   :  DOUBLE;
begin
  Printer.Orientation := poLandscape;
  Printer.BeginDoc;

  {Draw a rectangle to show the margins}
  Printer.Canvas.Rectangle(0,0, Printer.PageWidth, Printer.PageHeight);

  {Properties of Printer and Page}
  Printer.Canvas.Font.Name := 'Times New Roman';
  Printer.Canvas.Font.Size := 12;
  Printer.Canvas.Font.Style := [fsBold];
  Printer.Canvas.TextOut(iPosition(50), jPosition(40), 'Printer/Page Properties');

  Printer.Canvas.Font.Style := [];
  Printer.Canvas.Font.Size := 10;
  iBase := iPosition(50);
  jBase := 60;
  jDelta := 18;
  Printer.Canvas.TextOut(iPosition(50), jPosition(jBase),
    Printer.Printers.Strings[Printer.PrinterIndex]);
  INC (jBase, jDelta);

  Printer.Canvas.TextOut(iBase, jPosition(jBase),
    'Pixels:  ' + IntToStr(Printer.PageWidth) + ' X ' +
                  IntToStr(Printer.PageHeight));
  INC (jBase, jDelta);

  Printer.Canvas.TextOut(iBase, jPosition(jBase),
    'Inches:  ' + FormatFloat('0.000',
                  Printer.PageWidth / Printer.Canvas.Font.PixelsPerInch) + ' X ' +
                  FormatFloat('0.000',
                  Printer.PageHeight / Printer.Canvas.Font.PixelsPerInch)); 
  INC (jBase, 2*jDelta);

  Printer.Canvas.TextOut(iBase, jPosition(jBase),
    'Font:  ' + Printer.Canvas.Font.Name + '   Size:  ' +
    IntToStr(Printer.Canvas.Font.Size));
  INC (jBase, jDelta);


  Printer.Canvas.TextOut(iBase, jPosition(jBase),
    'PixelsPerInch:  ' + IntToStr(Printer.Canvas.Font.PixelsPerInch));
  INC (jBase, jDelta);

  Printer.Canvas.TextOut(iBase, jPosition(jBase),
    '''TEXT'':  ' + IntToStr(Printer.Canvas.TextWidth('TEXT')) + ' X ' +
                    IntToStr(Printer.Canvas.TextHeight('TEXT')) + '
pixels');

  {GetDeviceCaps Values}
  INC (jBase, 2*jDelta);
  Printer.Canvas.Font.Size := 12;
  Printer.Canvas.Font.Style := [fsBold];
  Printer.Canvas.TextOut(iBase, jPosition(jBase), 'GetDeviceCaps');
  INC (jBase, jDelta);

  Printer.Canvas.Font.Size := 10;
  Printer.Canvas.Font.Style := [];

  FOR j := LOW(DeviceCapsIndex) TO HIGH(DeviceCapsIndex) DO
  BEGIN
    value := GetDeviceCaps(Printer.Handle, DeviceCapsIndex[j]);
    Printer.Canvas.TextOut(iBase, jPosition(jBase), DeviceCapsString[j]);

    IF   (DeviceCapsIndex[j] < 28) OR (DeviceCapsIndex[j] > 38)
    THEN Printer.Canvas.TextOut(iPosition(250), jPosition(jBase), Format('%-8d',  [value]))
    ELSE Printer.Canvas.TextOut(iPosition(250), jPosition(jBase), Format('%.4x', [value]));

    INC (jBase, jDelta);

  END;

  {Put image in lower left corner}
  Printer.Canvas.Draw (iPosition(300), jPosition(100),
                       Form1.Image1.Picture.Graphic);

  {Place same image, 1" wide with appropriate height at location
   4" over and 1" down from top left}
  GraphicAspectRatio := Form1.Image1.Picture.Height /
                        Form1.Image1.Picture.Width;

  iPixelsPerInch := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
  jPixelsPerInch := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
  PixelAspectRatio := jPixelsPerInch / iPixelsPerInch;

  TargetRectangle := Rect(4*iPixelsPerInch,  {4"}
                            jPixelsPerInch,  {1"}
                          6*iPixelsPerInch,  {6" -- 2" wide}
                            jPixelsPerInch +
                          TRUNC(2*iPixelsPerInch * GraphicAspectRatio *
                                PixelAspectRatio));

  Printer.Canvas.TextOut(4*iPixelsPerInch, jPixelsPerInch -
                         Printer.Canvas.TextHeight('X'),
                         '2" wide at (4", 1")');
  Printer.Canvas.StretchDraw (TargetRectangle, Form1.Image1.Picture.Graphic);

  {Write to offscreen bitmap and then copy to Printer Canvas}
  SourceRectangle := Rect (0,0, 3*iPixelsPerInch-1,  2*jPixelsPerInch-1);

  {This should not work!  Rectangle = Left, Top, Right, Bottom
   Top and Bottom are reversed?}
  DestinationRectangle := Rect(4*iPixelsPerInch,    6*jPixelsPerInch,
                               7*iPixelsPerInch-1,  4*jPixelsPerinch-1);

  Printer.Canvas.TextOut(4*iPixelsPerInch, 4*jPixelsPerInch -
                         Printer.Canvas.TextHeight('X'),
                         IntToStr(3*iPixelsPerInch) + ' pixels by ' +
                         IntToStr(2*jPixelsPerInch) + ' pixels -- ' +
                         '3"-by-2" at (4",4")');

  OffScreen := TBitMap.Create;
  TRY
    OffScreen.Width  := SourceRectangle.Right  + 1;
    OffScreen.Height := SourceRectangle.Bottom + 1;
    WITH  OffScreen.Canvas DO
    BEGIN
      Pen.Color := clBlack;
      Brush.Color := clWhite;
      Rectangle(0,0, 3*iPixelsPerInch-1, 2*jPixelsPerInch-1);
      Brush.Color := clRed;
      MoveTo (0,0);
      LineTo (3*iPixelsPerInch-1, 2*jPixelsPerInch-1);

      Brush.Color := clBlue;
      MoveTo (0,0);
      FOR i := 0 TO 3*iPixelsPerInch - 1 DO
      BEGIN
        x := 12*PI*(i / (3*iPixelsPerInch - 1));
        y := jPixelsPerInch + jPixelsPerInch*SIN(x);
        LineTo (i, TRUNC(y));
      END

    END;

    Printer.Canvas.CopyRect(DestinationRectangle, OffScreen.Canvas,
                            SourceRectangle);
  FINALLY
    OffScreen.Free
  END;

  {List the fonts for this printer}
  iBase := iPosition(750);
  Printer.Canvas.Font.Name := 'Times New Roman';
  Printer.Canvas.Font.Size := 12;
  Printer.Canvas.Font.Style := [fsBold];
  Printer.Canvas.TextOut(iBase, jPosition(40), 'Fonts');

  Printer.Canvas.Font.Style := [];
  Printer.Canvas.Font.Size := 10;
  jDelta := 16;
  FOR j := 0 TO Printer.Fonts.Count - 1 DO
  BEGIN
    Printer.Canvas.TextOut(iBase, jPosition(60 + jDelta*j), Printer.Fonts.Strings[j])
  END;

  Printer.EndDoc;

end;


end.
</PRE><HR>


<HR SIZE="6" color="#00FF00">
<FONT SIZE="2">
<a href="mailto:rdb@ktibv.nl">Please email me</a> and tell me if you liked this page.<BR>
<SCRIPT LANGUAGE="JavaScript">
<!--
	document.write("Last modified " + document.lastModified);
// -->
</SCRIPT><P>
<TABLE BORDER=0 ALIGN="CENTER">
<TR>
	<TD>This page has been created with </TD>
	<TD> <A HREF="http://www.dexnet.com./homesite.html"><IMG SRC="../images/hs25ani.gif" WIDTH=88 HEIGHT=31 BORDER=0 ALT="HomeSite 2.5b">
</A></TD>
</TR>
</TABLE>

</FONT>


</BODY>
</HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费高清电影| 国产精品免费网站在线观看| 成人午夜又粗又硬又大| 奇米精品一区二区三区在线观看| 国产精品久久久久aaaa| 精品国产麻豆免费人成网站| 色偷偷久久一区二区三区| 国产精品12区| 麻豆高清免费国产一区| 亚洲成人精品一区二区| 亚洲天堂av老司机| 亚洲国产精品成人综合| 精品国产a毛片| 欧美精品视频www在线观看| 色综合久久久网| 99久久er热在这里只有精品15| 国产综合色在线| 青青草国产精品亚洲专区无| 亚洲国产精品麻豆| 亚洲婷婷综合色高清在线| 国产精品毛片高清在线完整版| wwww国产精品欧美| 精品国产一区二区在线观看| 91麻豆精品国产自产在线观看一区 | 精品一区二区国语对白| 亚洲国产精品人人做人人爽| 亚洲最大成人网4388xx| 一区二区三区精品视频在线| 国产精品白丝在线| 最新国产精品久久精品| 国产精品欧美极品| 中文字幕亚洲一区二区va在线| 亚洲国产精品高清| 国产精品婷婷午夜在线观看| 欧美激情自拍偷拍| 国产精品欧美经典| 国产精品国产三级国产aⅴ原创| 欧美激情一区二区三区蜜桃视频| 国产免费成人在线视频| 国产精品你懂的在线欣赏| 国产精品久久久久久妇女6080| 国产精品视频线看| 国产精品电影一区二区三区| 亚洲丝袜制服诱惑| 亚洲国产成人av网| 亚洲va韩国va欧美va精品 | 国产黄色成人av| 国产成人精品免费在线| 成人av网站在线| 99精品国产热久久91蜜凸| 99久久久精品| 精品视频在线免费观看| 欧美日韩精品欧美日韩精品一综合| 欧美日韩夫妻久久| 精品欧美久久久| 国产精品福利一区| 亚洲国产一区二区三区青草影视| 图片区日韩欧美亚洲| 美女www一区二区| 国产美女娇喘av呻吟久久| 成人午夜免费视频| 色综合激情五月| 69久久夜色精品国产69蝌蚪网| 精品国产三级电影在线观看| 国产精品夫妻自拍| 视频一区视频二区中文| 国产盗摄女厕一区二区三区| 色老汉一区二区三区| 日韩欧美一卡二卡| 中文字幕精品一区| 亚洲成人av一区| 国产伦精品一区二区三区视频青涩 | 婷婷夜色潮精品综合在线| 久久爱www久久做| 波多野结衣在线一区| 欧美色偷偷大香| 亚洲精品一区二区三区精华液| 国产欧美一二三区| 午夜精品在线看| 成人免费视频国产在线观看| 欧美色精品在线视频| 精品成人一区二区| 亚洲在线一区二区三区| 国产在线精品国自产拍免费| 色婷婷av一区二区三区软件| 精品免费日韩av| 亚洲最大成人综合| 国产传媒久久文化传媒| 欧美福利视频导航| 国产精品网友自拍| 久久se这里有精品| 欧美日韩黄色影视| 亚洲视频香蕉人妖| 国产麻豆午夜三级精品| 欧美性猛交xxxxxx富婆| 国产精品国产精品国产专区不蜜| 久久电影网站中文字幕| 日本高清免费不卡视频| 日本一区二区综合亚洲| 久久国产生活片100| 欧洲av在线精品| 国产精品美女久久福利网站| 国产一区二区三区最好精华液| 欧美色精品天天在线观看视频| 1000部国产精品成人观看| 国产精品一区二区视频| 欧美成人aa大片| 日韩高清在线电影| 欧美在线观看一区二区| 亚洲欧洲日本在线| 国产a视频精品免费观看| 日韩精品专区在线| 日韩va亚洲va欧美va久久| 欧美性猛交xxxx乱大交退制版| 亚洲图片欧美激情| 99视频一区二区三区| 国产欧美日韩不卡| 国产风韵犹存在线视精品| 日韩你懂的电影在线观看| 午夜精品久久久| 欧美日韩在线观看一区二区| 亚洲最大色网站| 欧美日韩中字一区| 亚洲高清免费在线| 欧美丝袜丝nylons| 亚洲综合色视频| 欧美色中文字幕| 亚洲一二三区不卡| 欧美午夜在线观看| 亚洲一区二区三区四区中文字幕| 在线欧美小视频| 亚洲一区二区视频在线观看| 欧美午夜精品久久久久久超碰| 一区二区久久久| 欧美色图免费看| 日本中文字幕不卡| 日韩三区在线观看| 国产在线播放一区三区四| 日韩精品福利网| 成人美女视频在线观看| 色婷婷综合激情| 欧洲精品视频在线观看| 一区二区三区国产精华| 色偷偷88欧美精品久久久| 亚洲欧美激情在线| 色噜噜狠狠色综合中国| 亚洲一二三区在线观看| 欧美日韩免费不卡视频一区二区三区| 亚洲3atv精品一区二区三区| 8x8x8国产精品| 韩国成人精品a∨在线观看| 国产欧美日韩亚州综合| 91视频www| 亚州成人在线电影| 日韩美女一区二区三区| 国产精品中文字幕一区二区三区| 国产精品久久看| 在线欧美日韩精品| 麻豆精品新av中文字幕| 久久久综合精品| 91在线观看免费视频| 日韩在线一区二区三区| 久久精品这里都是精品| 色婷婷综合久久久中文一区二区 | 美女一区二区三区在线观看| 久久嫩草精品久久久久| 91丝袜美腿高跟国产极品老师 | 欧美成人一区二区三区片免费 | 不卡视频在线看| 秋霞电影网一区二区| 久久众筹精品私拍模特| 99国产精品99久久久久久| 日韩**一区毛片| 亚洲国产成人自拍| 欧美三级蜜桃2在线观看| 国产精品伊人色| 亚洲电影在线免费观看| 精品国产乱码久久久久久闺蜜| 成人av在线一区二区| 日本不卡一区二区| 欧美国产丝袜视频| 制服丝袜成人动漫| 99久久国产免费看| 韩国一区二区三区| 一区二区三区在线免费| 久久久久国产精品人| 欧美美女激情18p| 国产v日产∨综合v精品视频| 午夜精品久久久久久久 | 天堂av在线一区| 国产精品美女久久久久久久久久久 | 亚洲精品中文字幕乱码三区| 精品国产3级a| 欧美性大战xxxxx久久久| 国产精品亚洲专一区二区三区| 午夜精品久久久久久不卡8050 | 久久精品国产色蜜蜜麻豆| 亚洲精品视频在线| 国产精品拍天天在线| 欧美成人高清电影在线|