Don't use DrawString("X") . Fonts are never perfectly centered. Use DrawLine .
<Button.Template> <ControlTemplate TargetType="Button"> <Grid> <Border x:Name="border" Background="{StaticResource GlassBrush}"> <Border.Effect> <BlurEffect Radius="2" /> <!-- That's the "scratch" glow --> </Border.Effect> </Border> <ContentPresenter /> </Grid> </ControlTemplate> </Button.Template> For web apps mocking a desktop environment, you cannot rely on OS defaults. You need CSS.
<Path x:Name="MinimizeGlyph" Stroke="White" StrokeThickness="1.5" Data="M 5 15 L 17 15"/> windows 7 exe buttons scratch
Did you try to build these buttons? Share your screenshots in the comments below!
// Center of button is X=11, Y=11 (in 0-index) int center = 11; int offset = 4; // Draw the '' line e.Graphics.DrawLine(Pens.White, center - offset, center - offset, center + offset, center + offset); // Draw the '/' line e.Graphics.DrawLine(Pens.White, center + offset, center - offset, center - offset, center + offset); In WPF, you don't draw pixels; you draw vectors. To get that "scratch" look, you need to disable native window styling ( WindowStyle="None" ) and build the caption buttons using Path geometries. Don't use DrawString("X")
But how do you rebuild those from absolute scratch? Whether you are writing a custom WinForms application, a WPF control, or just a CSS experiment, recreating the Windows 7 chrome is a lesson in precision rendering.
<Path x:Name="MaximizeGlyph" Stroke="White" StrokeThickness="1.5" Data="M 6 6 L 16 6 L 16 16 L 6 16 Z"/> Use a LinearGradientBrush on the Background property of the Button ControlTemplate. For true Aero glass, you actually need the BlurEffect : <Button
// The "Red" isn't pure red. It's a gradient. Color topColor = Color.FromArgb(255, 235, 110, 110); Color bottomColor = Color.FromArgb(255, 165, 50, 50); // Draw rounded rectangle (2px radius) GraphicsPath path = GetRoundedRect(buttonRect, 2); LinearGradientBrush brush = new LinearGradientBrush(buttonRect, topColor, bottomColor, LinearGradientMode.Vertical); FillPath(path, brush);
So, fire up your IDE. Disable the default chrome. Draw your first rectangle. And for a moment, pretend your modern SSD is running an Intel Core 2 Duo.