How to make DirectX Control partially transparent on C# Form - c#

I have a Windows Form with an image as a background; and I also have a user control which I've added to the form, and renders itself using directx. However, I want the directx UserControl (directx scene) to render partially transparent so that I can see the image background of the form.
I have the source code to the managed directx user control, but I just don't know enough about directx to make it so the entire scene renders semi-transparent. Does anyone know how I would go about achieving this?
Note: I'm using C#/VS '08/Managed DirectX
Thanks for your help.

I don't believe this is possible in Windows Forms as you'll run into 'airspace' issues. There are a few posts which cover this (granted they point you to use WPF and D3DImage).

not sure but, maybe this will help...
http://www.c-sharpcorner.com/UploadFile/Nildo%20Soares%20de%20Araujo/TransparentControls11152005074108AM/TransparentControls.aspx

Related

VLC.DotNet Control Hosted in WPF

I have hosted the VLC.DotNet windows Control in a WindowsFormsHost element, inside a WPF window. The reason behind doing this, instead of using Vlc.DotNet WPF control is because the performance of the WinForms version is twice better than the WPF version.
Anyway, everything works fine, except for one annoying detail; When using the WinForms version inside a WinForms App, the rendered video will exactly fit the control; However, using the same control inside a WindowsFormsHost element, causes the video to be rendered as it's original size and not fitted to the control.
There are 2 things to notice here :
The WinForms control is exactly the same, so in my opinion, this behavior could not be related to it.
Using Spy++ I've managed to see when the control is used inside a WinForms App, the rectangle of the rendered video is exactly the same size as the rectangle of the Control itself, But when used in WPF App, the recatngle of the video (which is rendered by VLC and I have no control on it) is not the same size as the control. Instead, it has the same size as the video itself.
Anyone has any particular ideas on why WPF is showing this strange behavior?
Any suggestions would be appreciated.
Thanks a lot folks.
Finally, I managed to find out what was causing the problem and resolved it!
I should confess that the problem was not even remotely related to the first 2000 things that comes to mind in these situations! Instead, it was related to the most ridiculous thing that never happened to catch my eye! Well, as they say, it's always in the last place you look!
As weird as it may sound, the problem was related to video scaling! I needed to scale the video and apparently, when you set scaling in vlc, the video wont get fitted to container anymore.
That was it!

how to save Canvas as image in WINRT using c# [duplicate]

I am developing a paint like application in metro style with C#/XAML. I want to save whatever content is drawn on canvas as image. I have checked this solutions but it didn't helped me.
Save canvas to bitmap
http://blogs.msdn.com/b/saveenr/archive/2008/09/18/wpf-xaml-saving-a-window-or-canvas-as-a-png-bitmap.aspx
So how can I save the canvas content as image ? Please help me with sample coding.
The accepted answer from Sascha is no longer true for Windows 8.1. There is a new RenderTargetBitmap class that allows Rendered XAML to be converted to a bitmap.
See: http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.imaging.rendertargetbitmap.aspx
However I can't seem to render that XAML is Collapsed or otherwise not currently on screen. Any help with that would be appreciated!
It seems it is currently not supported out of the box like we were used to do it with WPF:
http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/dd66c749-efed-4b55-a716-e0aa3a637d28
While when doing HTML5/Javascript Metro apps you can do this:
http://social.msdn.microsoft.com/Forums/en-US/winappswithhtml5/thread/cf8c17dc-68d4-4777-951f-bb7f0665bd06
The standard approach in other xaml frameworks such as Silverlight and WP7 was to use WriteableBitmap, however the version in WinRT doesn't have a constructor that takes a xaml element which leads me to believe that it's currently impossible against the latest API.
Sorry I couldn't be more help/
One workaround is to use Direct2D with DirectWrite. It is a bit involved, but I might make a library available at some point.

How to change ListView background image layout?

I've tried to find a way to change the layout of the background image on the ListView control.
I've searched around but haven't got any straight answer.
I can see that there is a ListView property BackgroundImageLayout which is supposed to do the job. But when i change it nothing really happens beside that the BackgroundImageLayoutChanged event is triggered.
How it is possible to change the BackgroundImageLayout on the ListView control? Is there any possible workaround to achive my goal?
PS.: I know about 3rd party controls that 'fix' this problem, but I'm looking for a solution that would do the task without any additional components.
ListView is a native Windows control. Yes, it does support a background image, the LVM_SETBKIMAGE message takes care of it. It however doesn't support the boilerplate Winforms BackgroundImage support, notable lacking is BackgroundImageLayout, the property that Winforms implements for the Control class and implements when the ControlStyles.UserPaint is turned on. It is not for native Windows controls, they paint themselves.
The guy that wrote the Winforms wrapper class for ListView did the next best thing, he added a new property to the ListView class called BackgroundImageTile. A layout option that the native Windows control does implement. Which leaves you with just the two layout options that the native control supports. Tile or don't tile.
That same guy did some pretty heroic things to make the Winforms wrapper class behave reasonably. The code is filled with hacks to work around the native control's quirks. Awesome work. His life would have been a lot easier if the Windows team guy would have the luxury to make the Winforms guy's life easier. But it doesn't work that way, ListView has been around a lot longer than Winforms. And wasn't designed that well from the getgo, Microsoft had pretty significant growing pains around that time.
Fast forward and change the rules so you don't depend on legacy code: WPF, Silverlight, WinRT.
According to the MSDN, 'ListView.BackgroundImageLayout Property':
"The API supports the .NET Framework infrastructure and is not
intended to be used directly from your code."
and
This property has no effect on the layout of the background image of the ListView control, therefore it is not shown in the designer or by IntelliSense.
Use the BackgroundImage property to set the background image. See msdn for more info:
That is unless you have something fancy you are trying to do with it?
EDIT: As per a previous thread HERE: the short answer is that you can't. =(
If you desparately want it, try creating a blank image that is the dimensions of your ListView. Add to this image YOUR image and add at it a position that is in the middle. There may be something similar in nature to this in under Bitmaps or Images.

an XNA way to make a menustrip

I will preface this by I am new to XNA and I realize what I am asking for doesn't exist.
However I am curious if I wanted to create something similar to a menustrip from winforms in XNA, how would I do that? Is there a best way? Or even a way?
I appreciate it, thanks!
Well, if you're only targeting windows, you can always render XNA in a winforms project or wpf app. Once you do that, you can use the built-in controls to render the menu.
If however you're looking for something that will work on xbox or windows phone, you will have to do the work of rendering and positioning the menu yourself using whatever rendering techniques you are familiar with (ie. SpriteBatch, etc.)
I found a possible solution, that will need further investigation:
http://neoforce.codeplex.com/
This should give me UI control w/o having to recode everything, unless I can just add an XNA pane to my winforms app
Edit:
neoforce appears to not work well with c# 2010. I did however find this: http://create.msdn.com/en-US/education/catalog/sample/winforms_series_1 which does work, to do as Joel Martinez mentioned of drawing an XNA form inside of a winform. It is not trivial but this example code should be enough for a jump start.

Windows Mobile - Way to invert compact framework controls

I have a screen in my windows mobile app that I is intended for another person than the user to look at and interact with (it is a signature screen).
There is a few edit boxes and such on that screen. Is there any way to make them display upside down?
If so I would love to hear how. Thanks!
Are the controls (except the signature) purely for viewing (i.e. interaction is not needed)? If so, I'd be inclined to just take a screen shot, rotate that bitmap, draw it to the Form's background and then put the signature control on top of that.

Categories