Draw Line on Canvas Based on Mouse Movement in .NET MAUI - c#

I'm trying to build an application like MS paint where there's a pencil icon that can draw a line (freehand line) when the user moves the mouse while holding the left-click button of the mouse. Do you have any idea how to implement this?

According to your description, you can use .NET MAUI Community Toolkit package and then use its DrawingView.
The DrawingView provides a surface that allows for the drawing of lines through the use of touch or mouse interaction. For more details, you can refer to How do I draw on canvas using finger? on how to use it.

Related

How to draw on image in xamarin forms?

I'm coding an application with xamarin forms and I've a problem.
The goal is to have an image (from an api), detect the touch event when the user touches the screen on this image and then, draw something like an icon on the image with the coordinates catched by the touch event.
I didn't find any component that allow me to do that. Has someone an idea?
Thanks
Maybe this can help:
https://forums.xamarin.com/discussion/comment/190529#Comment_190529
https://www.nuget.org/packages/Xamarin.Controls.SignaturePad/
https://github.com/15mgm15/Xamarin-Forms-Signature
You can set an Image for the background and use the signature pad to draw in front of it.

Complete interaction through a form using C#

I am making an overlay program with C# that will have an overlay for games. I am currently using a borderless form with a transparent background and a picture box to draw pictures to the screen, but I can't click the window behind the form. I have set the form to be always on top so that I can play games and the UI stays, but every time the mouse goes over the form in the game if I click the focused window switches to my form, preventing game interaction.
I have tried using functions to just draw images to the screen without using forms, but I cannot work out how to do that.
All I want is things like an external menu/crosshair and such, for use in minecraft. As for the menu, I could make my own media controls and such, and the crosshair would be useful because I hate the default crosshair. I could draw shapes to the screen, but if I don't use pictures the crosshair might look tacky.
A possible solution is a per pixel alpha blending window.
Here is a good starting point: Per Pixel Alpha Blend in C#
The example source code should give you the idea.
Hope this helps

Making a navigation 3D cube

I'm trying to make a 3D cube in Microsoft Visual Studio, and what I'm trying to get it to do is let you drag it around with your mouse.
(Ex. Grab the cube with left click and holding and then dragging around your screen to rotate it 3D)
is this possible to do with c#?
This is easy to implement in WPF Introduction to WPF 3D and using Behaviors for making it drag-able
You can use transformation in WPF, or use opengl in C#, see this post.

C# Picturebox leaves a white trail when moved

I'm using a timer to move a PictureBox inside a form. The picturebox leaves a white trail behind it which disappears when the picturebox stops. Is there any way to get rid of the white trail? I've tried this.Invalidate(); which removed the trail but caused the whole form to flimmer until the picturebox stopped.
If anyone could help me solve this problem I would be grateful!
It's generally much more difficult to do animations in WinForms than in WPF, because WinForms was not designed to support animations.
Have a look at the open source library Dot Net Transitions that provides some animation functionality to WinForms
The Transitions library lets you create animated transitions of any properties of user-interface elements for .NET. It provides an easy way to perform UI animations in .NET in a similar way to the Core Animation library for Apple and the iPhone.
http://code.google.com/p/dot-net-transitions/

moving mouse cursor off screen in C#

I have a wpf window that has a height of 2000 with an actual desktop height of about 1000. Obviously about half of the window is off screen. Even though the window extends below the screen, the mouse will not move down to that area. I do want this content to be off-screen, and I want the mouse to be able to move over it and click on elements if the mouse is positioned over an element at that position. I don't want to change my screen resolution as some content absolutely has to be off the screen. Not sure how to go about this.
Cursor delimiting is not done by the application, but by Windows itself. To my knowledge there is no way to have your cursor pointing off the screen.
You could simulate what you want by doing what many games do. Do not draw the Windows cursor, draw a custom one in your app window. Force the real cursor (not being drawn) to stay in the center of the monitor. Every time the user moves the real cursor, move your application's cursor accordingly and re-place the real cursor to the center of the screen.
This will give the illusion of what you'd like, but I don't think WPF can handle this.
There is not an off the screen cursor position in Windows. I think the mouse is bounded by the screen resolution, even if windows are not.
If you take a look at the screen shots of MaxiVista you'll find a screen shot showing the Device Manager:
Device Manager http://www.maxivista.com/pics/screenshots/vista_devicemanager_en.gif
As you can see they simply wrote a virtual display adapter, which provides its own display size. So windows will be informed about a available size of e.g. 2560x1600 would be possible and allows these bounds for all windows and the mouse. Now it is up to the display driver to forward the right portions of this virtual screen to the current real display adapters so that the right part is shown on each physical device.
I think it is possible. This program will enable to use a secondary computer as an extra monitor. There are several programs that can let you know the coordinates where your mouse cursor is positioned. For example AutoIt will do that easily.
When you install autoit it comes with this utility that will let you know the cordinates where you position the mouse. When I took the screen capture the mouse does not show up but I draw a blue dot where the mouse was located. Note that the cordinates where 710, 1464. Right now my screen resolution is 1200 * 1920 (my monitor is rotated). So with Autoit I am able to position my mouse cursor by doing something like
When I run that autoit program it will move the mouse to that location. The answers to this question seem to be right cause I am not able to move the mouse any further than 1200 to the right. In other words executing MouseMove(2500,800) will result in moving the mouse to 1200,800. Now the interesting part is how come I am able to move the mouse to (2500,800)! if I use This program In other words executing MouseMove(2500,800) now works with Autoit and the mouse actually moves to the other computer (maxivista has to be running). maxivista shows that there can be a way of moving the mouse outside the resolution of your screen.

Categories

Resources