カイロを使用。mono c#CairoHelper.Translate
大きな矩形の内側に矩形を描いていますが、魔法使いは描画領域の内側にあります。
cr.Translate(width/2, height/2);
cr.Rectangle((pX + (i * tmp)) , pY, boxsize, boxsize);
private void recordPosition(double x, double y)
{
x = x*2;
y = y*2;
boxCoordinates.Add(new double[,]
{
{x, y}
}
); // store coords
}
List<double,double> boxCoordinates
をそうするために:私は描画領域の魔女にイベントをアタッチするために管理している
が、私はそれから
this.AddEvents ((int) EventMask.ButtonPressMask);
this.ButtonPressEvent += delegate(object o, ButtonPressEventArgs args) {
hasInterface(args.Event.X, args.Event.Y);
Console.WriteLine("Button Pressed " + args.Event.X + ", " + args.Event.Y);
};
を拡張したオブジェクトである私は、動的に使用して四角形を描画しています描画領域の内側では、x = 90、y = 45の「外側」の視点からx = 0、y = 0に四角形が描画されます。幅= 180、高さ= 100 私はtranslateを使用していました(これの半分がコピーされているのでサイズ/ 2)ので、この問題を解決するために描画領域が四角形のサイズ変更を行っていたことを意味します。これを2倍しますが、これは機能しません。私は描画された四角形の外側に「ヒット」しています。
これを行うにはどのような方法が最適ですか?私はX Yの位置をウィンドウから描画領域に変換することを意味しますが、これは他の言語では可能でしたが、C#やモノからの描画領域の作成方法はわかりません。
ありがとうございました。
ロジックは私がやっているのと似ていますが、Offset変数はどこから来ているのですか?私はそれをどのように初期化するのですか? また、リストのを使用してシェイプの位置を保持していますが、それを行うような感覚を増しますが、テストではListを使用し続けることを考えています。 –
オフセットは、あなたの世界のビューポートの左上隅の位置になります。多くのリストオブジェクトを保持することは無駄に見えます。 – IanNorton
私が言ったのはListのようなものです Shapeにはxとyとそのオブジェクトに関する他の詳細があります。ご協力いただきありがとうございます。 –