0

ここに問題があります。その円を数字に合わせようとしています。ブレンドでそれを行うと、Left (23) があることがわかります。プログラムで Canvas.SetLeft(thePanel,23) を実行しようとすると、オーバーシュートします。さらに良いことに、Silverlight でこのようなコントロールを知っている人がいたら教えてください。これが行うことは、ユーザーが番号をクリックすると、緑色の円がその番号に移動するため、ユーザーが選択したように見えることです。代替テキスト

ブレンド

4

1 に答える 1

2

Circle オブジェクトでは、円の半径と TranslateTransform 属性を設定する必要があります。Circle の半径が 15 であるとします。

private const double Radious = 15.0;

private double _x = Radious;
private double _y = Radious;

private TranslateTransform _translation = new TranslateTransform();

円の X 座標と Y 座標を処理するプロパティ、

public double X
    {
        get { return this._x; }
        set
        {
            this._x = value;
            _translation.X = this._x - Radious;
        }
    }

    public double Y
    {
        get { return this._y; }
        set
        {
            this._y = value;
            _translation.Y = this._y - Radious;
        }
    }

また、Silverlight では、ユーザーがキャンバス上でクリックした場所を取得し、このコードをパネルのクリック イベントに設定して、円の中心をユーザーがクリックした場所に設定できます。

//Get the points where it was clicked
Point clickPoint = e.GetPosition(Canvas);

MyCircle.X = clickPoint.X;
MyCircle.Y = clickPoint.Y;

常に固定位置に配置する場合は、ユーザーが数字の周りをクリックした場合に円の中心を数字の中心に設定するか、円の X 値を変更する条件を設定できます。希望の位置に移動します。

于 2010-04-05T16:34:26.477 に答える