喫茶XRAYトップページ

[スレッド全体
]

[9815] Re:難解と思われる文章の読み方返信 削除
2016/4/24 (日) 01:32:37 ny
う! 難解だ。

>FloodFillを使用した結果の図形なり画像を
>プリンタで印刷できさえすれば構わない.
>その方法があるか ? あれば教えて頂きたい.
>ということでよろしいでしょうか ?


ということだったのですが・・・・・

[9816] FloodFillの描画結果をプリンタで印刷返信 削除
2016/4/24 (日) 20:29:39 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 です.

[9817] Re:FloodFillの描画結果をプリンタで印刷返信 削除
2016/4/24 (日) 22:09:21 Mr.XRAY
> ↓は,上のコードの実行結果です.この図は,印刷スプールの画像です.

私はキングジムの回し者ではありません.


[9818] Re2:FloodFillの描画結果をプリンタで印刷返信 削除
2016/4/25 (月) 02:45:11 ny
ありがたや、ありがたや、
神様、仏様!!!

今日は回転すし食べて腹こわしてました。
明日、参考コードを組み込んでみます。

>「依頼」には通常「代価」が
何がよい考えたのですが、当方、坊主なので「生前戒名」はいかがでしょうか。
80Kから都市部では500Kくらいしますが。。。。
(坊主のくせに、すし食って、今の時間に起きてるって、つっこまないで!)

[9819] Re3:FloodFillの描画結果をプリンタで印刷返信 削除
2016/4/25 (月) 08:30:56 Mr.XRAY
> >「依頼」には通常「代価」が
> 何がよい考えたのですが、当方、坊主なので「生前戒名」はいかがでしょうか。


いりません !!
代価,代償をを要求すると,ルンペルシュティルツキンのように,
自分で自分の身を滅ぼすことになるかも知れませんので (^^;

>(坊主のくせに、すし食って、今の時間に起きてるって、つっこまないで!)

実は,夜な夜な,密会が...
捜査当局が証拠をつかむまでお待ちください.


[9820] Re4:FloodFillの描画結果をプリンタで印刷返信 削除
2016/4/25 (月) 08:35:50 Mr.XRAY
> 代価,代償をを要求すると,ルンペルシュティルツキンのように,

今,ググったら,ルンペルシュティルツヒェン(Rumpelstilzchen) ?
英語読みだと キンにはならないか ?
そうだったのか ?
どっちにしても言葉に発したら分からないからいいとしよう !


[9828] Re5:FloodFillの描画結果をプリンタで印刷返信 削除
2016/4/26 (火) 01:50:25 ny
>Printer.Canvas.StretchDraw
理解できました。
printer.Canvas.CopyRectとか、デルファイのプリンタ出力の常套手段だったのでしょか。
頂いたコードを参考に、希望どうりの結果が得られました。

>ルンペルシュティルツヒェン
怖いですねぇ〜〜。
>捜査当局
怖いですねぇ〜〜
当方も「お布施、お布施」と、言ってると身を引き裂さかれてしまいそう。
「ザーンゲ、ザンゲ」(懺悔)

ありがとうございました。

[9829] Re6:FloodFillの描画結果をプリンタで印刷返信 削除
2016/4/26 (火) 12:06:15 Mr.XRAY
▼ nyさん

> printer.Canvas.CopyRectとか、デルファイのプリンタ出力の常套手段だったのでしょか。

その他にも Windows API にも,描画に関係する関数類がありますが,
割と一般的に使用されていますね.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82