WPF 漂亮长方体、正文体简单实现方法 Path实现长方体 正方体方案 WPF快速实现长方体、正方体的方法源代码

这段XAML代码在WPF中实现了一个类似长方体视觉效果的图形

  1. 声明式绘制:通过Path、PathGeometry和PathFigure等元素组合,能够以声明方式精确描述长方体每个面的位置和形状,无需编写复杂的绘图逻辑,清晰直观。

  2. 层次结构与ZIndex控制:利用Panel.ZIndex属性定义图形的堆叠顺序,从而实现了立体感和前后遮挡效果。这里通过设置负值使得边框线条显示在表面之下,模拟了长方体的边缘效果。

  3. 灵活样式与颜色填充:可以方便地定义各个部分的颜色(Fill属性)和轮廓线(Stroke属性),轻松实现复杂渐变、纹理等填充效果,以及不同宽度和颜色的线条,增强了图形表现力。

  4. 复用与模块化:尽管这里的长方体是由四个Path元素组成,但实际项目中可将这些Path元素封装为一个用户控件或数据模板,实现图形组件的复用和模块化设计。

  5. 动态调整与数据绑定:所有几何路径点的坐标值均可作为动态属性进行绑定,这意味着可以根据运行时的数据变化自动调整长方体的大小和位置,实现动画效果或者响应式布局。

  6. 可视化设计工具支持:由于使用的是标准WPF控件和属性,因此可以在Visual Studio或其他支持WPF的设计器中直接预览和编辑这个长方体图形,提升了UI设计效率。

这段XAML代码充分利用了WPF强大的矢量图形绘制功能及声明式编程模型,既保持了代码简洁性,又实现了良好的视觉效果和扩展性。

<Grid Grid.Row="2" Grid.Column="0">
            <Path Stroke="Black"  StrokeThickness="0" Fill="#fff566">
                <Path.Data>
                    <PathGeometry>
                        <PathFigure  StartPoint="80,40" IsClosed="True">
                            <LineSegment Point="80,40" />
                            <LineSegment Point="105,10" />
                            <LineSegment Point="105,70" />
                            <LineSegment Point="80,100" />
                        </PathFigure>
                    </PathGeometry>
                </Path.Data>
            </Path>
            <Path Stroke="#bfbfbf"  StrokeThickness="1" Fill="#DEDEDE" Panel.ZIndex="-1">
                <Path.Data>
                    <PathGeometry>
                        <PathFigure  StartPoint="105,10" IsClosed="True">
                            <LineSegment Point="105,10" />
                            <LineSegment Point="80,8" />
                            <LineSegment Point="80,68" />
                            <LineSegment Point="105,70" />
                        </PathFigure>
                    </PathGeometry>
                </Path.Data>
            </Path>
            <Path Stroke="Black"  StrokeThickness="0" Fill="#d4b106" Panel.ZIndex="0">
                <Path.Data>
                    <PathGeometry>
                        <PathFigure  StartPoint="80,40" IsClosed="True">
                            <LineSegment Point="80,40" />
                            <LineSegment Point="80,100" />
                            <LineSegment Point="50,98" />
                            <LineSegment Point="50,38" />
                        </PathFigure>
                    </PathGeometry>
                </Path.Data>
            </Path>
            <Path Stroke="#bfbfbf"  StrokeThickness="1" Fill="#E1E1E1" Panel.ZIndex="-1">
                <Path.Data>
                    <PathGeometry>
                        <PathFigure  StartPoint="50,98" IsClosed="True">
                            <LineSegment Point="50,98" />
                            <LineSegment Point="50,38" />
                            <LineSegment Point="80,8" />
                            <LineSegment Point="80,68" />
                        </PathFigure>
                    </PathGeometry>
                </Path.Data>
            </Path>
        </Grid>

 

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
感谢您的问题。以下是使用 WPF 修改窗口标题栏颜色的代码: 1. 添加以下命名空间: using System.Runtime.InteropServices; using System.Windows.Media; 2. 在窗口类中添加以下代码: [DllImport("user32.dll")] public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); [DllImport("user32.dll")] public static extern IntPtr ReleaseCapture(); private const uint WM_NCLBUTTONDOWN = 0xA1; private const uint HT_CAPTION = 0x2; private const int GWL_STYLE = -16; private const int WS_SYSMENU = 0x80000; private void SetTitleBarColor(Color color) { // 获取窗口句柄 IntPtr hWnd = new WindowInteropHelper(this).Handle; // 获取当前窗口样式 int style = GetWindowLong(hWnd, GWL_STYLE); // 去掉系统菜单样式 SetWindowLong(hWnd, GWL_STYLE, style & ~WS_SYSMENU); // 让非客户区可拖动 MouseDown += (s, e) => { if (e.LeftButton == MouseButtonState.Pressed) { ReleaseCapture(); SendMessage(hWnd, WM_NCLBUTTONDOWN, new IntPtr(HT_CAPTION), IntPtr.Zero); } }; // 修改颜色 Microsoft.Windows.Shell.WindowChrome.SetWindowChrome(this, new Microsoft.Windows.Shell.WindowChrome { CaptionHeight = 0, GlassFrameThickness = new Thickness(0), CornerRadius = new CornerRadius(0), UseAeroCaptionButtons = false, ResizeBorderThickness = new Thickness(0), NonClientFrameEdges = NonClientFrameEdges.None }); Background = new SolidColorBrush(color); } 3. 在窗口初始化方法中调用 SetTitleBarColor: public MainWindow() { InitializeComponent(); SetTitleBarColor(Color.FromRgb(255, 0, 0)); // 这里设置为红色 } 希望上述代码对您有帮助。如果您有其他问题,欢迎随时向我提出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weijia3624

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值