WPF笔记(1.10 绘图)——Hello,WPF!

原文:WPF笔记(1.10 绘图)——Hello,WPF!

书中的代码语法过时了,改写为以下(测试通过):

        <Button>
            <Button.LayoutTransform>
                <ScaleTransform  ScaleX="3" ScaleY="3" />
            </Button.LayoutTransform>
            <StackPanel Orientation="Horizontal">
                <Canvas Width="20" Height="18" VerticalAlignment="Center">
                    <Ellipse Canvas.Left="1" Canvas.Top="1" Width="16" Height="16"
                      Fill="Yellow" Stroke="Black" />
                    <Ellipse Canvas.Left="4.5" Canvas.Top="5" Width="2.5" Height="3"
                      Fill="Black" />
                    <Ellipse Canvas.Left="11" Canvas.Top="5" Width="2.5" Height="3"
                      Fill="Black" />
                    <Path Data="M 5,10 A 3,3 0 0 0 13,10" Stroke="Blue" />
                </Canvas>
                <TextBlock VerticalAlignment="Center">Click!</TextBlock>
            </StackPanel>
        </Button>

ScaleTransform将button放大3倍。
Canvas上画图,画一个笑脸,3个椭圆,黄色是脸的轮廓,黄色是眼睛。蓝色钢笔画的是嘴巴——可以顺便了解这四个元素在Canvas上是怎么精确定位的。

时间: 2024-10-09 00:19:27

WPF笔记(1.10 绘图)——Hello,WPF!的相关文章

WPF笔记1 用VS2015创建WPF程序

使用WPF创建第一个应用程序.实现功能如下: 单击"Red"按钮,文本显示红色:单击"Black"按钮,文本显示黑色:单击"Back"按钮,退出当前应用程序. 实现步骤如下: 新建项目,选择WPF程序. 选中创建的windows窗口,在属性中更改Title为"使用visual studio 2015 创建WPF应用程序". 添加lable,将内容更改为"Hello WPF!",在属性中更改背景色backgr

WPF笔记(2.9和2.10)——Layout

原文:WPF笔记(2.9和2.10)--Layout 2.9讲的是,如果内部设定超过容器大小,怎么办?StackPanel会裁剪越界部分DockPanel和Grid会智能判断,从而决定换行. 2.10 自定义布局容器自定义容器要实现两个方法MeasureOverride和ArrangeOverride,并保证遍历其下的所有子控件,使他们都执行Measure和Arrange方法. using System;using System.Windows.Controls;using System.Win

WPF笔记(2.5 Canvas)——Layout

原文:WPF笔记(2.5 Canvas)--Layout Canvas是最精确的布局容器--绝对定位,此书作者不建议使用,以为控件的大小一般会随着内部字体图片的动态生成而自动变化,所以使用前三种布局是最好的选择,在这一点上,我也持同样意见. Canvas使用Top/Bottom属性控制距离顶部/底部的高度:使用Left/Right属性控制距离左/右的距离.有趣的是,调整Form的大小,第二个TextBlock的位置会相应变化,但和底部以及右边的距离是不变的,代码见下: <Canvas Backg

WPF笔记整理 - Bitmap和BitmapImage

项目中有图片处理的逻辑,因此要用到Bitmap.而WPF加载的一般都是BitmapImage.这里就需要将BitmapImage转成Bitmap 1. 图片的路径要用这样的,假设图片在project下的Images目录,文件名XXImage.png. pack://application:,,,/xxx;component/Images/XXImage.png 2. 代码: Bitmap bmp = null; var image = new BitmapImage(new Uri(this.X

WPF笔记整理--DataBinding(2)

图片绑定时的一个问题.场景如下: 有2个窗口A和B,A窗口的业务逻辑是编辑生成图片.然后从A窗口可以打开B窗口.B窗口是由A生成所有图片的列表.当在A窗口编辑生成图片并保存后打开B窗口就会看到刚刚生成的图片.关闭B窗口,可以在A窗口中继续编辑图片,再次保存图片并打开B窗口,就会看到最新的图片的变化.图片是保存在本地路径. 解决方案:定义一个Converter,将图片读到MemoryStream中,然后再Binding.代码如下: public object Convert(object valu

WPF笔记整理--DataBinding(1)

WPF的数据绑定是一大亮点.如果用WPF而不用数据绑定,那就太失败了. 也不多废话,如果不知道如何绑定,请百度一下.这里简单的提几点: 1. ObservableCollection可用于集合绑定,由于已经实现了INotifyPropertyChanged,可以通过添加删除集合中的元素来实现对UI列表项更新.注意,当一个ObservableCollection已经有元素,通过再次new集合并不能实现清空页面已显示的内容. 如果希望ObservableCollection中某列表项的属性值改变显示

WPF笔记(1.9 样式和控件模板)——Hello,WPF!

原文:WPF笔记(1.9 样式和控件模板)--Hello,WPF! 资源的另一个用途是样式设置: <Window >  <Window.Resources>    <Style x:Key="myStyle" TargetType="{x:Type TextBlock}">      <Setter Property="VerticalAlignment" Value="Center"

WPF笔记(1.2 Navigation导航)——Hello,WPF!

原文:WPF笔记(1.2 Navigation导航)--Hello,WPF! 这一节是讲导航的.看了一遍,发现多不能实现,因为版本更新了,所以很多旧的语法不支持了,比如说,不再有NavigationApplication,仍然是Application,TextBlock容器的TextWrap属性改为TextingWrap,StartupUri指向"Page1.xaml".只要WPFApplication(不是Browser)内展示Page的页面,都会自动产生导航条.下面我们来看Page

WPF笔记(2.7 文字布局)——Layout

原文:WPF笔记(2.7 文字布局)--Layout 这一节介绍的是文字布局的几个控件: 1.TextBlock      最基本的文字控件可以配置5个Font属性.TextWraping属性,"Wrap"是换行,NoWrap是不换行(原书有误,在此更正).TextBlock控件内可以放置很多控件,不光是文字. <TextBlock TextWraping="Wrap">    <Button>Split</Button>