1
DotNet / Here is a demo to create a dragable borderless window with SFML.NET.
« on: December 06, 2015, 05:33:03 am »
https://gist.github.com/zwcloud/0c0e9f52d8010e1d5164
using System;
using SFML.System;
using SFML.Window;
namespace DragableWindow
{
class DragableWindow : Window
{
private Vector2i grabbedOffset;
private bool grabbedWindow;
private void WindowOnClosed(object sender, EventArgs eventArgs)
{
Window window = (Window)sender;
window.Close();
}
private void OnMouseButtonPressed(object sender, MouseButtonEventArgs e)
{
Window window = (Window)sender;
if (e.Button == Mouse.Button.Left)
{
grabbedOffset = window.Position - Mouse.GetPosition();
grabbedWindow = true;
}
}
private void OnMouseMoved(object sender, MouseMoveEventArgs e)
{
Window window = (Window)sender;
if (grabbedWindow)
{
var position = Mouse.GetPosition();
var newPosition = position + grabbedOffset;
if (window.Position != newPosition)
{
window.Position = newPosition;
System.Diagnostics.Debug.WriteLine("offset: {0}, position: {1}", grabbedOffset, window.Position);
}
}
}
private void OnMouseButtonReleased(object sender, MouseButtonEventArgs e)
{
if (e.Button == Mouse.Button.Left)
{
grabbedWindow = false;
}
}
public DragableWindow(VideoMode mode, string title, Styles style) : base(mode, title, style)
{
this.Closed += WindowOnClosed;
this.MouseButtonPressed += OnMouseButtonPressed;
this.MouseMoved += OnMouseMoved;
this.MouseButtonReleased += OnMouseButtonReleased;
}
}
static class Program
{
[STAThread]
public static void Main()
{
Window window = new DragableWindow(new VideoMode(512, 512), "SFML Dragable Window", Styles.None);
// Start game loop
while (window.IsOpen)
{
// Process events
window.DispatchEvents();
// Display the rendered frame on screen
window.Display();
}
}
}
}
using SFML.System;
using SFML.Window;
namespace DragableWindow
{
class DragableWindow : Window
{
private Vector2i grabbedOffset;
private bool grabbedWindow;
private void WindowOnClosed(object sender, EventArgs eventArgs)
{
Window window = (Window)sender;
window.Close();
}
private void OnMouseButtonPressed(object sender, MouseButtonEventArgs e)
{
Window window = (Window)sender;
if (e.Button == Mouse.Button.Left)
{
grabbedOffset = window.Position - Mouse.GetPosition();
grabbedWindow = true;
}
}
private void OnMouseMoved(object sender, MouseMoveEventArgs e)
{
Window window = (Window)sender;
if (grabbedWindow)
{
var position = Mouse.GetPosition();
var newPosition = position + grabbedOffset;
if (window.Position != newPosition)
{
window.Position = newPosition;
System.Diagnostics.Debug.WriteLine("offset: {0}, position: {1}", grabbedOffset, window.Position);
}
}
}
private void OnMouseButtonReleased(object sender, MouseButtonEventArgs e)
{
if (e.Button == Mouse.Button.Left)
{
grabbedWindow = false;
}
}
public DragableWindow(VideoMode mode, string title, Styles style) : base(mode, title, style)
{
this.Closed += WindowOnClosed;
this.MouseButtonPressed += OnMouseButtonPressed;
this.MouseMoved += OnMouseMoved;
this.MouseButtonReleased += OnMouseButtonReleased;
}
}
static class Program
{
[STAThread]
public static void Main()
{
Window window = new DragableWindow(new VideoMode(512, 512), "SFML Dragable Window", Styles.None);
// Start game loop
while (window.IsOpen)
{
// Process events
window.DispatchEvents();
// Display the rendered frame on screen
window.Display();
}
}
}
}