投稿者 yamaV1.02β  (社会人) 投稿日時 2009/5/10 09:49:34
エクセルVBAの1辺100ポイント指定で作成した1辺の長さを再取得すると、99.75になる件について一応納得できない事もない回答をマルチ先で受けましたので報告いたします。

imari さんの引用:
たしかオートシェイプの幅と高さの最小単位は0.75(ポイント)なので、 
そのように丸められると思います。


int(100/0.75)*0.75=99.75 という事のようです。

エクセルVBAとの違いについては、今はこだわらない事にします。<(_ _)>

さて、
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard48.htm
Visual Basic 初級講座 第48回 高度なメソッド・プロパティ
■リスト18:DrawEdgeメソッドの多重定義

の以下のコードが間違っているのでは、と混乱しながら読んだのですが、私の勘違いなのかコードの間違いなのか確認させて頂きたく。

'■DrawEdge 
''' <summary>でっぱった四角形を描画します。</summary> 
''' <param name="g">描画に使用するGraphicsクラスを指定します。</param> 
''' <param name="Point1">描画する範囲の左上を表す点</param> 
''' <param name="Point2">描画する範囲の右下を表す点</param> 
''' <remarks></remarks> 
Private Overloads Sub DrawEdge(ByVal g As Graphics, ByVal Point1 As Point, ByVal Point2 As Point)

    Dim Rect As Rectangle

    Rect.X = Point1.X
    Rect.Y = Point1.Y
    Rect.Width = Point2.X
                ~~~~~~~~~~~
    Rect.Height = Point2.Y
                ~~~~~~~~~~~
    Call DrawEdge(g, Rect)

波線部分は、
        With Rect
            .X = Point1.X
            .Y = Point1.Y
            .Width = point2.X - Point1.X
            .Height = point2.Y - Point1.Y
        End With

が正しいと思うのですが、(With...End Withステートメントを使う使わないかはどうでも良いのですが、私はついついこう書きたくなります。)

私何か勘違いしてますでしょうか?

どんなものでしょう。