Setting size of Application Icon in WPF - c#

I have a code wherein i put an image on my Application icon:
Title="Test WPF" Height="600" Width="800" WindowStartupLocation="CenterScreen" Closing="WindowClosing" Icon="ICON.PNG"
I know that the icon size is like 12 x 12 or 24 x 24.
Is it possible to have the Application Icon customize on size? like 40 x 24?

You can use the WindowChrome class to customize the non-client area of a window. In this page there is a section specifically mention the application icon and title.
The application icon and title are not displayed by the WindowChrome class; they have to be added to the border as custom content.
This is an example on how to do that.

Related

How to make opacity darker in wpf

My main window backgrond color is Background="#005075" when the user click on some button some small window pops up, and then I'm chanching the main window opacity like Opacity="0.5", the problem is that it makes the background lighter, how do I make a dark opcity in wpf?
I do something similar a lot. The best way to do this is by having a couple of top-level grid's in your Window and work with those rather than the Window itself.
For example, Ill do something like this:
<Window x:Class="WpfApp9.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp9"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<!-- Background grid with 100% opacity -->
<Grid Background="#005075"/>
<!-- main grid, which sits on top of the background grid -->
<Grid x:Name="MainGrid" Background="Transparent" Opacity="0.5">
<!-- Windows controls go here -->
</Grid>
</Grid>
</Window>
Opacity will not make it darker. What you can do is you can make some kind of panel which is stretched all over your main window, and has a black color and opacity of 0.2 or something like that, and mainly is hidden by default. And when you want to make the main window disabled you make that panel visible. This should solve your problem.
You can also use it as a loading panel, if you add some animation in center or something like this. So it will be over all of the content of your main window and will not allow the user to interact with your main window while it's disabled.
P.S. The black panel with opacity 0.2 should be positioned over all of the controls in main window

WPF C#: Setting background color of a WPF app not setting fully

I made a WPF app (WindowStyle="None" hence no default windows buttons like exit, maximize, minimize)
It doesn't set the color (in my case, it's black) to the entire frame:
As you can see, there is a bit of white gap. (It's not a margin, I tested for this).
<Window x:Class="FancyGUI.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStyle="None"
Title="MainWindow" Height="250" Width="340"
Background="Black">
</Window>
You need ResizeMode="NoResize" in your window, otherwise there's a title bar shown (empty in your case), even if you set WindowStyle="None".
With WindowStyle="None" only:
(notice the blue "gap" as you call it on top... that's your white gap, just that my theme is blue)
With ResizeMode="NoResize":
(no gap, but can't resize the window now)
Or if you still want it to be resized (have the resize grip on it), but not show that title bar, set AllowsTransparency="True" and ResizeMode="CanResizeWithGrip":
(notice the grip for resizing on bottom right)
Note that having AllowsTransparency=true may have side effects. If any of those side effects is a problem to you, you can implement the resizing yourself by creating your own (black in your case) border and send the drag/resize messages. Expand on whether you need this or not and I'll show you how.
I'm noticing that the typical chrome is removed around the window.
I recreated the window with the code you provided and I see this:
Is there a resource file being referenced that may be affecting the window?
Also, you have Live Visual Tree running. Try clicking the middle button and then try clicking on the white bar. If you can select it, you should see it selected in the VS Live Visual Tree window.
Edit...
After seeing Jcl's post about the ResizeMode="NoResize" I gave it a try.
Sure enough, that's the secret.
Thanks Jcl!

How can I maximize a WPF page when the application starts?

I have a simple WPF application with two xaml Pages. I'd like the app opening with the maximum size of the screen.
I've found only answers about WPF Windows, but for Pages there is not a "WindowState" property.
Thanks a lot!
In your Xaml window definition simply define:
WindowStartupLocation="CenterScreen" WindowState="Maximized"
You could set the Width and Height property manually according to your current Screen Resolution from here
System.Windows.SystemParameters.PrimaryScreenWidth;
System.Windows.SystemParameters.PrimaryScreenHeight;

Creating Raw Graphic Elements (no Windows chrome)

I am new to Windows 7 programming and am trying to get a sense of what technologies or frameworks I should be using (I suppose within .NET) that will let me create graphical elements on the screen without any of the standard Windows UI chrome (resize handles, minimize/maximize, title bar etc.).
As a "hello world", I'd like to be able to create a 200x200 pixel box, red, with a slight transparency, that has the text "hello world" in it and maybe moves across the screen. That would be a great start into the kind of thing I'm interested in.
In WPF you can set the WindowStyle to "None" and the ResizeMode to "NoResize" to remove the OS chrome from the window. To make the window translucent you need to set AllowsTransparency to "True" and set Opacity to a percent value of your choosing.
Here's a window with no chrome and an 80% opacity:
<Window x:Class="TestWpfApplication.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStyle="None"
ResizeMode="NoResize"
AllowsTransparency="True"
Opacity="0.8"
Title="Test Window" Height="300" Width="300">
You can even create a brush and set that to the Window's OpacityMask property to make the window non-square.

C# WPF Window Width, MaxWidth, MinWidth ignored

I have a WPF Window defined in XAML like this:
<Window x:Class="com.some.company.window"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="My Cool Window"
x:Name="CoolWindow"
Height="435"
Width="70"
MinWidth="70"
MaxWidth="70"
Left="{PropertyState Default=0}"
Top="{PropertyState Default=0}"
Initialized="InitializeWindow"
ResizeMode="NoResize"
Style="{DynamicResource DefaultWindow}">
.....
.....
</Window>
The problem is that when the Window is created and displayed on the screen - it is ALWAYS larger than the 70 pixels I specified in the width definition. The width is probably 80-90 pixels. My width attributes are ignored. None of the contents inside the Window are larger than 70 pixels either.
Even when I try to resize the window with the grips, it will not let me resize it below a specific width. Is there some reason WPF is not letting me set the width of the window smaller? Is there a hidden minimum width value for every window? and how would I get around this?
EDIT:
When I add WindowsStyle="None" into the Window attribute, the width is correctly set to 70 pixels. However, this is not the style I want for the Window.
Thanks
You have set MinWidth to 70 and therefore size of your Window cant be less than that. BTW because of control box it's width seems to have a minimum limit of 132.
If we set WindowStyle="none" to remove the title and control box, we can make the Window even smaller.
<Window x:Class="WpfApplicationUnleashed.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:WpfApplicationUnleashed"
Title="" WindowStyle="None" Width="70">
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
</Grid>
</Window>
EDIT
To make the Window width to 70, while the close button, Title text still visible and no-resize use this:
<Window x:Class="WpfApplicationUnleashed.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:WpfApplicationUnleashed"
Title="My Window" WindowStyle="ToolWindow" Width="70" ResizeMode="NoResize">
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
</Grid>
</Window>
Since 70 is a very small width, you cant have minimize and maximize button along with close button.
70 that you have specified is not in pixels. WPF works on points and it actually sizes window to pixels based on Screen DPI (Dots per Inch).
I was able to do what I wanted by adding WindowStyle="ToolWindow" and ResizeMode="NoResize". This allowed me to keep the titlebar and the close button, while allowing the window's width to be set at 70pt.

Categories

Resources