名前 題名 ▼ Mr.XRAYさん > >ということだったのですが・・・・・ > > ホホホッ.おそらくそうだと思いました.でも, > > >下記サイトをみつけましたが、理解できません。 > > となっていました.となると,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 です. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link