「Xamarin.Mac/NSViewの座標系を左下原点から左上原点に変更する」を編集中
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
3行目: | 3行目: | ||
[[エクセル]]のグラフなども基本はこれである。 | [[エクセル]]のグラフなども基本はこれである。 | ||
− | しかし[[コンピューター | + | しかし[[コンピューター]]の世界ではなぜか古くから「左上が原点で下方向が+Yで右方向が+X」という座標系が一般的となっている。 |
− | + | PC-9801のGRAMもWindowsのGDIもDirectXも皆これである。 | |
− | + | このためWindowsなどからアプリを移植する際にこの点を考慮しないでコピペすると逆さま表示になる。 | |
しかし根本の[[ソースコード]]が壮大すぎて手を入れるのが難しい場合もある。 | しかし根本の[[ソースコード]]が壮大すぎて手を入れるのが難しい場合もある。 | ||
そういうときはNSViewのIsFlippedプロパティをオーバーライドして常に「true」を返すようにすればよい。 | そういうときはNSViewのIsFlippedプロパティをオーバーライドして常に「true」を返すようにすればよい。 | ||
− | + | この設定は、NSGraphcis系のみならず、CoreGraphicsにも反映される。 | |
<source lang="csharp"> | <source lang="csharp"> | ||
19行目: | 19行目: | ||
public override bool IsFlipped { get { return true; } } | public override bool IsFlipped { get { return true; } } | ||
− | |||
public override void DrawRect(CoreGraphics.CGRect dirtyRect) | public override void DrawRect(CoreGraphics.CGRect dirtyRect) | ||
{ | { | ||
+ | // 描画 | ||
var cgContext = NSGraphicsContext.CurrentContext.GraphicsPort; | var cgContext = NSGraphicsContext.CurrentContext.GraphicsPort; | ||
cgContext.MoveTo(100, 100); | cgContext.MoveTo(100, 100); | ||
39行目: | 39行目: | ||
* [[Xamarin.Mac/スクリーンキャプチャを撮る]] | * [[Xamarin.Mac/スクリーンキャプチャを撮る]] | ||
* [[Xamarin.Mac/ディスプレイの物理サイズを取得する]] | * [[Xamarin.Mac/ディスプレイの物理サイズを取得する]] | ||
− | |||
== 参考文献 == | == 参考文献 == |