C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: Chartへの文字描画時のフォント


(過去ログ 124 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■73798 / inTopicNo.1)  Chartへの文字描画時のフォント
  
□投稿者/ ゆっきー (1回)-(2014/11/05(Wed) 11:48:15)

分類:[VB.NET/VB2005 以降] 

Visual Basic 2010、.NET Framework 4.0で開発をしています。


ChartコントロールのPrePaintイベントで文字を描画しています。
このときChart自信の文字(X軸のラベル等)とDrawStringで描画した文字のフォント?が違います。
DrawStringで描画したフォントがBold指定しているわけでもないのに太くなっています。

DrawStringで描画した文字をChart自信の文字と合わせるにはどのようにしたら良いのでしょうか?

以下はテストしているソースコードです。
Imports System.Windows.Forms.DataVisualization.Charting

Public Class Form1

    Private Sub Chart1_PrePaint(sender As Object, e As System.Windows.Forms.DataVisualization.Charting.ChartPaintEventArgs) Handles Chart1.PrePaint

        Dim g As Graphics = e.ChartGraphics.Graphics
        Dim f As Font = New Font("Microsoft Sans Serif", 10.0)
        g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias
        g.DrawString("10", f, Brushes.Black, 0, 0)
        f.Dispose()

    End Sub

    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load

        Dim dt As New DataTable

        dt.Columns.Add("SAMPLE_Y", Type.GetType("System.Int32"))
        dt.Columns.Add("SAMPLE_X", Type.GetType("System.Int32"))

        For i As Integer = 0 To 9
            Dim row As DataRow = dt.NewRow()
            row("SAMPLE_Y") = i
            row("SAMPLE_X") = i
            dt.Rows.Add(row)
        Next

        Chart1.Series.Clear()

        Chart1.DataSource = dt

        Dim series As New Series
        With series
            .Name = "X"
            .XValueMember = "SAMPLE_X"
            .YValueMembers = "SAMPLE_Y"
            .Color = Color.Red
        End With

        Chart1.Series.Add(series)

    End Sub

End Class

引用返信 編集キー/
■73799 / inTopicNo.2)  Re[1]: Chartへの文字描画時のフォント
□投稿者/ shu (626回)-(2014/11/05(Wed) 12:46:22)
No73798 (ゆっきー さん) に返信

> g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias
これをはずしてみてはどうでしょう?
引用返信 編集キー/
■73800 / inTopicNo.3)  Re[2]: Chartへの文字描画時のフォント
□投稿者/ ゆっきー (2回)-(2014/11/05(Wed) 13:17:50)
No73799 (shu さん) に返信
> ■No73798 (ゆっきー さん) に返信
>
>> g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias
> これをはずしてみてはどうでしょう?

外してみましたが状況は変わらず、DrawStringで描画した文字が太いです。
SolidBrushでブラシを作成しても一緒でした。

また、TextRenderer.DrawTextでも試してみましたが結果は同じでした。
引用返信 編集キー/
■73801 / inTopicNo.4)  Re[3]: Chartへの文字描画時のフォント
□投稿者/ shu (627回)-(2014/11/05(Wed) 14:34:48)
No73800 (ゆっきー さん) に返信
g.SmoothingMode = Drawing2D.SmoothingMode.None
g.TextRenderingHint = Drawing.Text.TextRenderingHint.SystemDefault

これでよくなりそう。
引用返信 編集キー/
■73803 / inTopicNo.5)  Re[4]: Chartへの文字描画時のフォント
□投稿者/ ゆっきー (3回)-(2014/11/05(Wed) 15:33:16)
No73801 (shu さん) に返信
> ■No73800 (ゆっきー さん) に返信
> g.SmoothingMode = Drawing2D.SmoothingMode.None
> g.TextRenderingHint = Drawing.Text.TextRenderingHint.SystemDefault
>
> これでよくなりそう。

フォントは細くなりましたが、アンチエイリアスの効果がなくなってしまいました。
できれば、アンチエイリアスを適用したいです。

PixelOffsetModeも使用してみましたが、うまくいきません。
無理なのかな?
引用返信 編集キー/
■73806 / inTopicNo.6)  Re[5]: Chartへの文字描画時のフォント
□投稿者/ C++ (1回)-(2014/11/05(Wed) 16:54:23)
No73803 (ゆっきー さん) に返信
> ■No73801 (shu さん) に返信
>>■No73800 (ゆっきー さん) に返信
>>g.SmoothingMode = Drawing2D.SmoothingMode.None
>>g.TextRenderingHint = Drawing.Text.TextRenderingHint.SystemDefault
>>
外してみましたが状況は変わらず、DrawStringで描画した文字が太いです。
SolidBrushでブラシを作成しても一緒でした。
http://www.hoshiwatch.com/category-11.html

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -