tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: VB6.0 SCALE MODE 4 の印刷について
投稿日: 2016/03/02(Wed) 13:06
投稿者魔界の仮面弁士
> g.DrawLine(blackPen,  g.PageUnit = GraphicsUnit.Millimeter

閉じ括弧が無いですよ。

それに、「g.PageUnit = GraphicsUnit.Millimeter」は『比較式』なので、
これは Boolean 値を意味しますよね。

DrawLine メソッドには、Boolean 型の引数を持ったオーバーロードがありません。


> g.DrawLine(blackPen, 10*120/1440*25.4,2*9*120/1440*25.4,10*120/1440*25.4, 2*57/1440*25.4)
この呼び出しの場合、各パラメータは
 第1引数: Pen
 第2引数: Double
 第3引数: Double
 第4引数: Double
 第5引数: Double
と解釈されます。
https://msdn.microsoft.com/ja-jp/library/system.drawing.graphics.drawline.aspx

DrawLine のオーバーロードで、5 つの引数を持つオーバーロードは
 DrawLine(Pen, Integer, Integer, Integer, Integer)
 DrawLine(Pen, Single, Single, Single, Single)
の 2 種類があります。

どちらのオーバーロードが使われるにせよ、Double → Integer あるいは Double → Single への
「縮小変換」が必要になります。そのため、コンパイルに失敗しています。
座標指定は、Integer 型または Single 型でなければならないのです。(もしくは Point/PointF 型)


今回のケースでは、「25.4」の代わりに「25.4F」または「25.4!」と記述してください。

小数リテラルは、基本的に Double 型を意味しますが、
末尾に F あるいは ! を付けた場合、Single 型の表記になります。



> 2. g.PageUnit = GraphicsUnit.Millimeter
>    で定義すると小数点は許されないのでしょうか
可能です。
ただし先述したように、「Single 型」の精度で指定する必要があります。


> 1.  Printer.ScaleMode = 4に相当するのは
VB6 であっても、普通は「4」というマジックナンバーではなく、
「vbCharacters」という定数を使うべきところですね。


> VB2005では無くなったのでしょうか?
一応、互換クラスでは残っています。このクラスは VB2010 以降に搭載されています。
https://msdn.microsoft.com/ja-jp/library/microsoft.visualbasic.powerpacks.printing.compatibility.vb6.printer.scalemode.aspx

この互換クラスを VB2005/2008 で使う場合は、追加インストールが必要です。
https://msdn.microsoft.com/ja-jp/vstudio/bb219077.aspx
http://www.atmarkit.co.jp/fdotnet/vblab/vbwizard_04/vbwizard_04_03.html


また、互換ライブラリの Printer クラスに頼らず、Graphics クラスで対処するなら、
ScaleTransform メソッドを使うことで、スケーリングを変更することができます。

VB6 でスケーリングを指定する場合、
 .ScaleMode = [ScaleModeConstants定数]
の方法よりも柔軟な座標指定の手段として
 .Scale (x1, y1)-(x2, y2)
のステートメントが使えましたが、それに相当するのがこの ScaleTransform メソッドです。
http://dobon.net/vb/dotnet/graphics/pageunit.html

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。