I'm writing an app in C# WPF and I'm hoping to implement a similar kind of touch-based horizontal scrolling that's featured prominently in Windows 8.
At the moment I'm using ScrollViewer with content inside it. This works fine as far as the scrolling is concerned, but it creates problems when interacting with controls inside of it (for example, sliders).
With my limited programming knowledge (a month ago the most I'd done was create a mockup in Photoshop :P), I'd assume this was because the touch hits the ScrollViewer first? Is there some way of flipping this around? I would be happy even if you had to hit a white space to be able to scroll, I just need the user to be able to interact with the controls inside easily without accidentally scrolling all over the place ^_^
Unfortunately, I can't just code for Windows 8 as this is specifically for a bunch of touch-enabled Windows 7 machines.
Look for the Metro theme here you might find some usful style here that you can modify and use..
Also you can check this website for information and guidelines on Metro UI on WPF
Related
I would like to overlay own content above a Direct3D v9 game (made by a third party).
Overlay Interactive Button
Specifically, I would like to overlay a clickable button control, like Steam does, for instance, though I'm attempting a much simpler interface.
Ideally, I would be able to overlay a WPF button or a Windows Form button or whole UserControl, but if that is not possible then creating a functioning button from primitives would suffice as well.
Text Overlay Working with SharpDX
I have a working sample of overlaying text based on the work of Justin Stenning
Namely with the help of SharpDX.Direct3D9.Font DrawText method
How to Overlay a Button or UserControl with SharpDX
I looked through relevant samples in https://github.com/sharpdx/SharpDX-Samples but was not able to find a way to include or draw native controls with SharpDX
Is it possible?
If not, are there any samples of drawing a clickable button from scratch?
Please bear in mind I'm a novice in the DirectX world :)
Your biggest problem isn't going to be getting the controls to render on top of a DX scene; it's going to be getting them to respond to input afterwards. You can probably rig up a way to get the visuals copied to a DX surface, but I have no idea how you would capture input, translate it, and deliver it back to the WPF components. If it's even possible, it's almost certainly more trouble than it's worth.
There are a couple game-oriented Xaml solutions out there that you may want to check out. WPF for Games is a partial C++ implementation of WPF based on Direct3D, and there's also the proprietary Noesis GUI.
I have to play a video in my C# program and I have to make it so that users can't interact with it, since the PC will be set in a public area.
I tried unchecking Enable Control and I also set uiMode to 'none', but CTRL+P (Pause) still works. This makes me think that other hotkeys do as well.
How can I set it so that you can't do anything with the video?
Edit:
I'm using Winforms, because it seems to be easier. I'm not really a C# developer, I have 0 experience and it resembles VB back from school.
In case you are developing WPF application, there is MediaElement you can use. It doesn't have any control for user interaction. Developer has to built it manually using buttons, progress bar, etc in case he need to provide control for user interaction.
And the usage is very straightforward :
<MediaElement Source="path_to_video-file.mp4" />
For reference :
Sample Application in MSDN
http://www.wpf-tutorial.com/audio-video/playing-video/
PS: It turns out that you are developing winform apps instead of WPF. In case this option still interesting for you to try, you can use ElementHost to embed WPF control in winform.
This is one of many tutorials available on net about how to use ElementHost control : http://tech.pro/tutorial/799/wpf-tutorial-using-wpf-in-winforms.
Have you tried putting another transparent WINDOW in front of the media player (area only if needed). While not totally befinner level, that is not exactly super science either.
As WINDOWS can go in front, that should block any interaction with the media player while - due to transparency - still showing the video.
MAybe even a control works (panel with nothing on it), but given that media player is a native control it may be needed to hide it behind a transparent window.
WOuld help to know what UI technology you use.... Winforms or WPF.
I have a C# application that has an existing WinForm that I now need to display upside down.
The application will be displayed on a touchscreen Windows 7 device. If two people are using the device, one person is viewing it right-side-up while another user will be simultaneously viewing it upside-down. I will need to have one control displayed right-side-up while another control is displayed upside-down, each duplicate forms. Both need to be functional. It is not necessary for the title bar and Windows close, maximize, and minimize to be rotated.
Is there a way to easily rotate this Form and all of its contents without having to rewrite it from scratch?
Unfortunately, rotating controls is not directly possible in WinForms.
At least, not if you want them to retain their functionality. It would be relatively simple to draw the control into a bitmap, rotate the bitmap, and then draw that back to the desired location on the form. But you would obviously lose the ability to interact with the controls. They would just be static representatives of their original selves.
But making functional upside-down controls just isn't going to happen. I mean, you could try to write a bunch of custom drawing code for owner-drawn controls, but you'll still run into a bunch of bugs, corner cases, and compatibility problems. The Win32 controls that WinForms is based on just don't support this. No big surprise, really, considering they were invented some 20–25 years before anyone thought of computer screens that you could carry around in your pocket and rotate in any direction. There is a good reason that UI technologies like WPF came out around the time that touch screens and tablets did.
There are some possibilities that can be explored when it comes to flipping the entire screen, but that's not going to help when you want different controls going different directions. (And I guess it betrays my vantage point as a desktop app guy when I say this, but that just sounds like an incredibly confusing UI.)
If you absolutely have to have this, someone else is going to have to give you another route to hack it, perhaps along the lines of Dhawalk's comment: hosting the WinForms control inside of a WPF app that does provide built-in support for rotated controls. I don't know enough about this to make any concrete suggestions down that path. From a few minutes of searching, it appears that WindowsFormsHost does not actually support rotation transforms, so this may be a non-starter anyway.
I am trying to create Windows 8 Metro App First Time.
I have worked on all three (C#, VB and JavaScript) languages.
I first created Grid App template (JavaScript Language). Everything looks fine. Scrolling was working through touch pad (two finger scrolling) in JS.
But When I created same Grid App in C#. What I found Horizontal Scrolling using two finger not working. I can only scrolling by dragging scroll-bar. Size of scroll-bar (thing that I pick, not whole scroll-bar) is also variable. It is taking around half of the scroll-bar size but when I move it to the right, Its size is getting small. I don't see any such behavior if I create same Grid App in JavaScript language.
Is any one else is facing same problem..??
I have also seen this problem in many apps that I have installed from store like 'NDTV' and a few more. May be these are developed in C#.
How can I get two finger scrolling working in C#..??
In meanwhile I am requesting to Create a tag something like metro-apps who have reputation more than 1500.
In a legacy product we used Sheridan controls to produce buttons that looked like this:
Is this style of button available in C# using VS2005?
The way buttons looked over the history of GUI development was affected heavily by machine capabilities. It all started with simple rectangles back in the late eighties, back when operating systems were 16-bit and video adapters could display only 16 colors. The 3-D style became vogue in the nineties, Sheridan was an early pioneer and was widely copied. Threed.ocx was a Microsoft library to get this styling. Empowered by video adapters being capable of 256 colors and enough horse power to draw the beveled edges. Some remnants of it persist in Winforms through the BorderStyle property.
By the time Winforms started, early 2000's, video adapters could display 16 million colors and elaborate gradients became the vogue. Clearly visible in the default style of a Winforms button as well as controls like ToolStrip and StatusBar. And Windows visual style themes. A significant disadvantage of this styling is that it cannot easily be overridden. Winforms has four distinct button renderers (note the FlatStyle property), they are all private classes that cannot be overridden. They are too elaborate to easily expose.
This has gone full circle, we are now back to simple flat rectangles. Very noticeable in the default styling for WPF buttons and the Metro theme in Windows 8. No longer affected by machine capabilities but (possibly) the limitations of CSS, the language used to give web pages their styling. Winforms supports it too through the FlatStyle and FlatAppearance properties.
Trying to resurrect the 3-D style is not so easy, you'll have to create a custom button control from scratch with ButtonBase as the base class. And override OnPaint() to draw the button the way you want it. It is pretty questionable whether you should even try, the 3-D style is definitely out of vogue and too strongly associated with old programs that stopped being maintained. Not the kind of association you'll want in a new program.
If you want the buttons exactly like that have you considered using images for the buttons? That way you just simply take an image of that style and make it into a button. You get all the functionality of a button but you also get it to look like you want it to.