[リストへもどる]
一括表示

投稿時間:2004/06/14(Mon) 11:44
投稿者名:おじん
URL :
タイトル:
Polyline(API)とScaleについて
折れ線グラフをイメージしています。形はよいのですが、大きさが思うように
描画されません(小さくなる)。line文でできることなのですが、色々と雑学
中です。よろしくお願いいたします。ソース例を示します。

Option Explicit
Private Type POINT
    X  As Long
    Y  As Long
End Type
Private Declare Function Polyline Lib "gdi32" ( _
    ByVal hdc As Long, _
    lpPoint As POINT, _
    ByVal nCount As Long) As Long

Private xy(39) As POINT
    
Private Sub Form_Click()
    Dim n&
    Picture1.Scale (0, 10)-(40, -2)     '<---ここがおかしい?
'    Picture1.AutoRedraw = False
    For n = 0 To 39                     'テストデータ
        xy(n).X = n: xy(n).Y = n Mod 9
    Next n
    
    Polyline Picture1.hdc, xy(0), 40    '<---思わしい結果でない!
    Polyline Form1.hdc, xy(0), 39       '<---Scaleしていないのに何故?
                                        '
    Picture1.Line (0, 0)-(40, 10)       '<---データとは関係ないが
                                        '    このScaleでは、見かけ正しい
End Sub

疑問1.PictureBoxとFormに同じようなグラフを描画するのは何故?
疑問2.xy(n).x xy(n).y の値に相当する大きさに描画されないのは何故?
    Picture1.Scaleで縦10、横40のつもり(端、マイナスは除く)

投稿時間:2004/06/14(Mon) 14:42
投稿者名:Say
Eメール:
URL :
タイトル:
Re: Polyline(API)とScaleについて
APIはVBの外の世界の関数です。
VB内の設定には関知しません。

一般にGDIは、DCに設定された描画矩形範囲の左上隅を原点とし、
単位はPixelです。

PaintPicture メソッドのヘルプの下のほうに
それに類する解説があります。

投稿時間:2004/06/14(Mon) 15:50
投稿者名:おじん
URL :
タイトル:
Re^2: Polyline(API)とScaleについて
Sayさま、毎度のことながらありがとうございます。
> APIはVBの外の世界の関数です。
> VB内の設定には関知しません。
世界が違うことには気がつきませんでした。以後、こころします。
APIを使うには「まだ10年早い」ということでしょう。
>
> 一般にGDIは、DCに設定された描画矩形範囲の左上隅を原点とし、
> 単位はPixelです。
>
> PaintPicture メソッドのヘルプの下のほうに
> それに類する解説があります。
読んで勉強します。ありがとうございました。