クリップボードにドロー系(メタファイルか?)でコピーするには

解決


Poohさん  2007-02-07 02:18:20  No: 135203

VB6.0でフォームやピクチャーボックスにLineメソッドやPrintメソッドで描画しています。SetDataメソッドでPictureBoxの描画などを送るり、ワードなどにペーストするとビットマップになり、またそれをプリントするとBackColorが白なのに、背景に薄いピンク色がついてしまいます。ドロー系で渡す方法はないのでしょうか?


K.J.K.  2007-02-07 02:31:56  No: 135204

VB6の標準のコントロールには、メタファイルを動的に生成する
機能はありません。そういう機能を持ったコントロールを探して
使うか、直接API関数を用いて生成するか、などしてください。


Poohさん  2007-02-07 17:46:22  No: 135205

ありがとうございます。
やはり、APIですか。グーグルしてみましたが参考になる資料はあまり無いようですね。


Poohさん  2007-02-07 19:00:01  No: 135206

灯台もと暗しで、このホームページの「VISUAL BASIC  Q & A 掲示板」に掲載されていた古市さんのサイトのアーカイブログを参照すれば出来そうです。
どうもありがとうございました。


K.J.K.  2007-02-08 22:16:35  No: 135207

どうしても、VB標準のPrint、Line、Circleメソッドでメタファイルを
作成したい、という場合のために、「邪道」なサンプルを作ってみました。
http://www.koalanet.ne.jp/~akiya/vbtaste/vbp/MetaDraw.lzh


Poohさん  2007-02-09 00:19:36  No: 135208

K.J.K.さんどうもありがとうございます。
古市さんのサンプルで一応メタファイル形式でクリップボードに貼り付けワードなどに転送はうまくいきましたが、正確な寸法での画像処理が必要でSetMapModeをMM_HIMETRICで描画していますが、スクリーン描画やコピー転送後の印刷で正しい寸法にならないので困っています。
K.J.K.さんのサンプルも検討させていただきます。
親切にも、早速サンプルを作っていただき、大変ありがとうございました。


K.J.K.  2007-02-09 02:42:28  No: 135209

あのサンプルは「8割は冗談」として作ってあります。
ですから、実用的なプログラムにしようとする際には、
真面目にAPI関数を直接用いて、きちんと計算して描画
することを薦めます。

で、寸法に関しては、デバイスに描画されるときには
そのデバイスにも依存する、というところには注意を
してください。


Poohさん  2007-02-09 17:50:09  No: 135210

ありがとうございます。
昨年末に、初めてVBをインストールして使い始めたばかりで、過去にはHP-Basic、あとはMacでお遊び程度Cをほんの少しかじったものです。
APIでもう少しがんばってみます。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加