>ということだったのですが・・・・・
ホホホッ.おそらくそうだと思いました.でも,
>下記サイトをみつけましたが、理解できません。
となっていました.となると,GetDeviceCaps と
>一度TCanvasオブジェクトに書いて、それをPrinterオブジェクトのCanvasにコピーすれば
の部分しかありません.
で,自分で確認した方がいいのでは.それは GetDeviceCaps で調べることになります.
これが最初のレスです.ところが,
>私の技量では理解できず でした。
ということでした.どこが ?
ということで,ちょっと意地悪してみたくなりました.
それと,この喫茶XRAY はいろいろな方が観ていると思います.
少しは参考になることも書きたかったので.
これがメールでのやりとりとの違いですね.
また,反応が早くないですから,そんなに急いでいるわけではないと...
遠回りしても影響ないと...
具体的にテストしたとかのコードもないし...
この喫茶XRAY で質問したこと自体が間違いの元だったですね (^^;
身の不幸を嘆いてくださいませ.
同じ質問を他のコミュニティの場で見つけても,レスはしないですね.
『お前性格悪いね』と思うでしょう ?
そうです.その通りでございます.ハイ.
昔,山岳会で,新人にロッククライミングを指導している時に,
登り方が悪いと言ってやり直しさせたことがあります.
『お前,そういう陰湿なことをするんじゃねえよ !!』
と,先輩にぶん殴られたことがあります.ホホホッ,オーホホホッ.
(いちいち殴るんじゃねえよ !! <-- 今だから言えるけど...)
で,本題ですが,ヒントは
>一度TCanvasオブジェクトに書いて、それをPrinterオブジェクトのCanvasにコピーすれば
にあります.TPrinter.Canvas では FloodFill が機能しないので,
例えば TBitmap.Canva や TMetafileCanvas に描画して,その描画結果の画像を
TPrinter.Canvas に描画します.
>具体的なコードが知りたいですがご教授を・・・・
と書いているので具体的なコードを.
本当は,そういう場合,質問する方が,簡単なテストコードを示すのが
いいんですけどね.
そうしないと,たとえ具体的なコードを示しても,
実際に意図する「具体的なコード」にならないことがあります.
テストコードがあれば,どのような仕様を満たせばいいのかが判断できる
ことがあります.
そういう手間は惜しまない方がいいです.ハッキリ言って.
単にコードが欲しいとなると「質問」ではなく「依頼」になって
しまうことがあります.「依頼」には通常「代価」が伴います.
# ルンペルシュティルツキンは言う,
# 《魔法には代償が伴うのだ》
下のコードは TBitmap.Canvas を使用する例です.
このコードではコピーではなく,StretchDraw しています.
動作確認は Windows 7 U64(SP1) + Delphi XE(UP1) Pro です.
procedure TForm1.Button2Click(Sender: TObject);
var
LBitmap : TBitmap;
LRect : TRect;
begin
LBitmap := TBitmap.Create;
try
//サイズは目的に応じて決める
LBitmap.Width := 200;
LBitmap.Height := 200;
//四角形を描画する
LRect := Rect(30, 50, 100, 120);
LBitmap.Canvas.Pen.Width := 5;
LBitmap.Canvas.Pen.Color := clBlack;
LBitmap.Canvas.Rectangle(LRect);
//塗り潰しの色を指定して,四角形の内部を塗り潰す
LBitmap.Canvas.Brush.Color := clLime;
LBitmap.Canvas.FloodFill(LRect.Left + 10, LRect.Top + 10, clWhite, fsSurface);
//ビットマップ画像をTPrinter.Canvasに描画
Printer.PrinterIndex := -1;
Printer.BeginDoc;
try
//印刷範囲の縦横比をビットマップと同じ比率にしないと歪む
Printer.Canvas.StretchDraw(Rect(300, 500, 2100, 2300), LBitmap);
finally
Printer.EndDoc;
end;
finally
FreeAndNil(LBitmap);
end;
end;
↓は,上のコードの実行結果です.この図は,印刷スプールの画像です.
印刷時の DPI は 300 です.
|