- PR -

DrawLineの平行移動

投稿者投稿内容
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-11-10 15:42
カウンターさんの最初にイメージしていた
描画オブジェクトは 「ディスプレイリスト」のように
もう一段上位のCGでの概念です。
SVGでの<svg:line ... のような
お絵かきソフトの線分ですね

[ メッセージ編集済み 編集者: MMX 編集日時 2004-11-10 15:45 ]
カウンター
大ベテラン
会議室デビュー日: 2004/02/19
投稿数: 123
投稿日時: 2004-11-10 17:20
なるほど、私の考え方が間違っていました。ご指導ありがとうございます。
なんとなくみえてきたんですが、理解できないところがあります。
[quote]
yaさんの書き込み (2004-11-10 14:35) より:
引用:

コード:

	private void MoveLineToRight(int x)
	{
		line_dx += x;
		this.Invalidate(); //無効化して
		this.Update(); //再描画させる
	}





この場合のthisとは何を指すのでしょうか?
すいませんが、よろしくお願いします。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-11-10 17:51
this.GetType.toString
this.GetType().ToString()
でクラス名はわかります
java言語では self です。
VBAでは Me (ちょっと違う?)

[ メッセージ編集済み 編集者: MMX 編集日時 2004-11-10 18:14 ]
カウンター
大ベテラン
会議室デビュー日: 2004/02/19
投稿数: 123
投稿日時: 2004-11-15 14:24
大分レスが遅くなりまして、すいません。
ちょっと、ほかの作業が発生してしまったので、そちらに時間を割いていました。

先日、yaにご指摘いただいた内容を参考にして、以下のように書いてみたのですが
最初の1回目のみ線が描画されるのですが、線の平行移動は実現出来ませんでした。
イメージとしては、グラフィックオブジェクトを取得して、変換行列を設定してから
線を引いて、変化良い行列のX座標を変更することで平行移動しているように見えるのかと思っていました。
今回の場合、問題はどこにあるのでしょうか?
よろしくお願いします。

コード:
    Private Sub frm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '初期チャートのグラフィック保存
        grp = Me.chtMAIN.CreateGraphics
        grpState = grp.Save()

        '変換行列のセット
        grp.ResetTransform()

    End Sub

    Private Sub move_Line(ByVal VerX As Integer)

        '垂直線の描画
        grp.DrawLine(Pens.Black, VerX, 0, VerX, 840)
        grp.Restore(grpState)

        '更新
        Me.Invalidate()
        grp.TranslateTransform(VerX, 0)
        Me.Update()

    End Sub

カウンター
大ベテラン
会議室デビュー日: 2004/02/19
投稿数: 123
投稿日時: 2004-11-15 18:54
とりあえず、解決しました。

線を描画する前にグラフィックオブジェクトをクリアすることで、
平行移動しているかのように見せることが出来ました。

どうもありがとうございました。

[ メッセージ編集済み 編集者: カウンター 編集日時 2004-11-15 18:55 ]

スキルアップ/キャリアアップ(JOB@IT)