I ableiten GraphicsControl
von Control
:Wie ist GraphicsDevice.Viewport an der falschen Stelle?
public abstract class GraphicsControl : Control
{
GraphicsDeviceService graphicsDeviceService;
protected override void OnCreateControl ()
{
// Don't initialize the graphics device if we are running in the designer.
if (!DesignMode)
{
graphicsDeviceService =
GraphicsDeviceService.AddReference
(
Handle,
new System.Drawing.Size (ClientSize.Width,
ClientSize.Height)
);
// Register the service, so components like ContentManager can find it.
services.AddService (graphicsDeviceService);
// Give derived classes a chance to initialize themselves.
Initialize ();
}
base.OnCreateControl ();
}
string DeviceBeginDraw ()
{
// ensure drawing is valid
// set up viewport
Viewport viewport = new Viewport
(
ClientRectangle.X,
ClientRectangle.Y,
ClientSize.Width,
ClientSize.Height
);
viewport.MinDepth = 0;
viewport.MaxDepth = 1;
GraphicsDevice.Viewport = viewport;
if (viewport.Bounds.Contains (mouse.X, mouse.Y))
{
// fire event
OnMouseMoved(this,
new MouseMovedEventArgs(new Microsoft.Xna.Framework.Point(mouse.X, mouse.Y)));
}
}
}
Dann wird die abgeleitete Canvas
Steuer wie folgt:
public sealed class Canvas : GraphicsControl
{
// subscribe to MousedMoved event
}
Der Bereich der Bewegung der Maus reagieren auf die Bildschirme oberen linken befindet (0, 0). Der Gesamtbereich überschneidet sich mit dem beabsichtigten Basissteuerelement, ist jedoch nicht angedockt und füllt das Parent-Steuerelement aus. Siehe Bild:
Kann mir jemand sagen, was ich tun könnte falsch sein? Wenn zusätzlicher Code erforderlich ist, fragen Sie einfach.
Auch MSDN seems to reference ClientRectangle
als die Eigenschaft zu verwenden.
Sie wissen, dass ClientRectangle immer auf (0,0) steht, wie es in Clientkoordinaten ist? Sie müssen wahrscheinlich explizit von Client zu Bildschirm-Koordinaten konvertieren. Vielleicht müssen Sie ClientToScreen P/aufrufen ... –
Muss dies in Game Development verschoben werden? Ich schätze, ich muss noch ein Bounty beginnen. – IAbstract
Wenn ich das Tumbleweed-Abzeichen für dieses hier bekomme, wünsche ich mir, dass es Cricket-Sounds machen würde, wenn ich darauf klicke. – IAbstract