投稿者 yamaV1.02β  (社会人) 投稿日時 2009/5/10 07:03:45
>液晶画面だとしたら、画面の推奨解像度と、OS 指定の解像度が一致しているかどうかを
>確認してください。

魔界の仮面弁士さん、いつもありがとうございます。

・画面の推奨解像度
・OS 指定の解像度

それぞれどう確認するのかわからないでいますが、解像度を変えてみると確かに正方形に見える解像度がありました。

おかげ様で正方形に見えるようになりました。

Using p As New Pen(Color.Red)
        p.Width = 10
        Dim g As Graphics = e.Graphics
        g.DrawRectangle(p, 10, 10, 100, 100)
End Using

が正しいのですね。
エラーがでないように書くのが精一杯の状態です。

エクセルVBAで試してみたのですが、
Sub testRectangle()
    Dim myRec As Shape
        Set myRec = _
            Sheet1.Shapes.AddShape( _
            msoShapeRectangle, 0, 0, 100, 100)
        
        Debug.Print myRec.Width, myRec.Height
End Sub

解像度を変えてみる前は縦にながい長方形でした。で、図形を90度回転させると、やっぱり縦長・同じ縦横比の四角形になったので、解像度の問題だと結論しました。

ところで、エクセルVBAでは縦横100ポイントの四角形をしていしているのに、
myRec.Width, myRec.Height は 99.75 を返します。
これはこれで不思議なのですが、ここで質問することではないような気がするようなしないようなです。

エクセルVBAだと、myRec.Width という書き方ができるのですが、
.NETで、

Debug.Print(g.Width, g.Height)

と書きたくても書けません。

どう書けばよいのでしょうか。