タイトル : 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 |