折れ線グラフの幅を太くして印刷するには

解決


vbex  2013-10-26 17:17:17  No: 148241  IP: [192.*.*.*]

環境は、Windows8,Visual Basic 2010 Expressです。
Chartを使っております。
プロパティで、チャートの種類を折れ線(Line)に設定しています。

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Chart1.Series("Series1").Points.AddY(10)
        Chart1.Series("Series1").Points.AddY(50)
        Chart1.Series("Series1").Points.AddY(30)
        Chart1.Series("Series1").Points.AddY(40)
        Chart1.Series("Series1").Points.AddY(60)

        Chart1.Series("Series1").BorderWidth = 10

    End Sub

でフォームの折れ線の幅は太くなります。

しかし、ボタンを貼り付けて

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Chart1.Printing.PrintPreview()
    End Sub

を実行すると、折れ線の太さは太くなっていません。実際に印刷しても
元のまま(BoderWidthを設定しないときと同じ)になります。

折れ線を太く印刷するにはどうすればよいでしょうか。
ご教示の程、お願いします。

編集    削除
オショウ  2013-10-27 20:04:23  No: 148242  IP: [192.*.*.*]

.NET版のChartは使ったことが無いので・・・

ttp://hanatyan.sakura.ne.jp/dotnet/mschart2.htm

ここに、.NETでOCX版のChartを貼ったケースの情報があります。
完全互換なら、この方法が使えるのでは・・・と思います。

お試しください。

以上。参考まで

編集    削除
vbex  2013-10-28 03:10:52  No: 148243  IP: [192.*.*.*]

オショウ様

ご回答ありがとうございます。
教えていただいたURLを見ましたが
使用しているChartにはPenプロパティが
見当たらずできませんでした。
http://hanatyan.sakura.ne.jp/dotnet/chartframe.htm
のページにChartのグラフを保存する方法があり
この方法で保存すると線も太く保存されました。
印刷も太く印刷されました。
Chart自身で同様の印刷ができるかをもう少し
調べてみます。

編集    削除
vbex  2013-11-10 17:12:02  No: 148244  IP: [192.*.*.*]

印刷を次のようにすれば、折れ線を太く印刷することが出来ました。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As                           System.EventArgs) Handles Button1.Click
 
        'PrintDocumentオブジェクトの作成
        Dim pd As New PrintDocument

        'イベントハンドラの追加
        AddHandler pd.PrintPage, AddressOf pd_PrintPage

        Dim ppd As New PrintPreviewDialog
        'PrintDocumentを設定
        ppd.Document = pd

        'ダイアログを表示する
        ppd.ShowDialog()


    End Sub


   Private Sub pd_PrintPage(ByVal sender As Object, _
     ByVal e As System.Drawing.Printing.PrintPageEventArgs)

        'グラフをメモリにロード
        Dim MemStm As New MemoryStream()
        Chart1.SaveImage(MemStm, ImageFormat.Bmp)

        'イメージオブェクにコピー
        Dim Img As Image = Image.FromStream(MemStm)

        e.Graphics.DrawImage(Img, e.MarginBounds)

        '次ページなし
        e.HasMorePages = False

        'イメージオブジェクトを解放
        Img.Dispose()
    End Sub

解決とさせていただきます。

編集    削除