using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes; namespace WpfMosaic
{
/// <summary>
/// Interaction logic for FlowerShape.xaml
/// </summary>
public class FlowerShape : Grid
{
/// <summary>
///
/// </summary>
/// <param name="count"></param>
public FlowerShape(int count)
{
Width = Height = 100;
Background = new SolidColorBrush(Colors.Black);
var strokeBrush= new SolidColorBrush(Colors.White);
this.Children.Clear();
var bg = new SolidColorBrush(Color.FromArgb(255, (byte)Utils.rnd.Next(0, 256), (byte)Utils.rnd.Next(0, 256), (byte)Utils.rnd.Next(0, 256)));
var width = Utils.rnd.Next(10, 51);
for (int i = 0; i < count; i++)
{
var angle = i * (360 / count);
var transGroup = new TransformGroup();
transGroup.Children.Add(new RotateTransform() { Angle = angle });
this.Children.Add(new Ellipse()
{
StrokeThickness = 1, Stroke = strokeBrush,
Margin = new Thickness(0, 0, 0, 50),
Fill = bg,
Width = width,
RenderTransformOrigin = new Point(0.5, 1)
,
RenderTransform = transGroup }); ; ; ; } } }
}

  

 void TesCreateShapes() {

            canvas.Children.Clear();
for (int i = 0; i < 100; i++)
{
var shap = new FlowerShape(12){ };
canvas.Children.Add(shap );
}
canvas.UpdateLayout();
return;
foreach (FrameworkElement shap in canvas.Children)
{
UISaveToPng(shap, @"C:\Users\gwang\Pictures\Mosaic\" + DateTime.Now.ToFileTime() + ".png");
}
Title = "done."; } void UISaveToPng(FrameworkElement ui, string fileName)
{ int width = (int)ui.ActualWidth;
int height = (int)ui.ActualHeight;
RenderTargetBitmap bmp = new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Pbgra32);
bmp.Render(ui);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
using (FileStream fs = new FileStream(fileName, FileMode.Create))
{
encoder.Save(fs);
fs.Close();
}
}

  

WPF create Flower shape的更多相关文章

  1. WPF 2D图形 Shape入门(一)--Shape

    本文是篇WPF Shape的入门文章 Shape 首先看看shape的继承链关系: 一个Shape具有哪些重要属性: 属性 说明 DefiningGeometry 默认的几何形状 RenderedGe ...

  2. WPF Input Validation Using MVVM

    Data validation is a key part in WPF.Validation is used to alert the user that the data he entered i ...

  3. 使用WPF创建画图箭头

    原文:使用WPF创建画图箭头 今天要给leader line画个箭头,所以就google一下,找到下面的文章,写的不错,可以实现我的需求,所以就摘录下来. 我把源代码中的arraw.cs加入到我的工程 ...

  4. Object.create 函数 (JavaScript)

    创建一个具有指定原型且可选择性地包含指定属性的对象. 语法 Object.create(prototype, descriptors) 参数 prototype 必需.  要用作原型的对象.  可以为 ...

  5. (WPF) MVVM: 动态添加控件及绑定。

    比如需要显示一个键盘,里面有各个按键.实现的效果如下: 之前的思路,就是建立一个singleKey的控件,然后在后台用代码动态的添加到父控件里去, 再用代码在后台进行绑定. 这种实现方法并不是真正的M ...

  6. (转)es6中object.create()和object.assign()

    今天学习javascript面向对象,在学习Obejct方法时了解到create方法,偶像想起之前使用的assign方法,顺带查找一番,感觉这篇博客讲解详细,遂转载. 先简单提一下装饰器函数,许多面向 ...

  7. WPF 字体描边的实现方式

    原文:WPF 字体描边的实现方式   <local:TextPath x:Name="PathEdge" Fill="Red" Stroke=" ...

  8. PHP执行文档操作

    1.POWINTPOINT系列 之前参与过一个商城的项目,里面有将excel 导出的功能,但是如果要弄成PPT的我们应该怎么办呢?PHP是属于服务器端的 总不能在里面装个Powintpoint吧.于是 ...

  9. python设计模式

    本节内容 设计模式介绍 设计模式分类 设计模式6大原则 1.设计模式介绍 设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复 ...

  10. HTML5资料

    1 Canvas教程 <canvas>是一个新的用于通过脚本(通常是JavaScript)绘图的HTML元素.例如,他可以用于绘图.制作图片的组合或者简单的动画(当然并不那么简单).It ...

随机推荐

  1. Einfuehrung in die Kuenstliche Intelligenz学习笔记

    1.Uninformed Search 1.1 State Space of a Problem 1.2 depth of the search tree and fringe of the sear ...

  2. 开源 - Ideal库 - 常用时间转换扩展方法(二)

    书接上回,我们继续来分享一些关于时间转换的常用扩展方法. 01.时间转日期时间 TimeOnly 该方式是把TimeOnly类型转为DateTime类型,其中日期部分使用系统当前日期,时间部分则使用T ...

  3. 鸿蒙Navigation页面生命周期

    Navigation作为路由容器,其生命周期承载在NavDestination组件上,以组件事件的形式开放.其生命周期大致可分为三类,自定义组件生命周期.通用组件生命周期和自有生命周期.其中,abou ...

  4. 推荐一个Star超过2K的.Net轻量级的CMS开源项目

    推荐一个具有模块化和可扩展的架构的CMS开源项目. 01 项目简介 Piranha CMS是一个轻量级且跨平台的CMS库,专为.NET 8设计. 该项目提供多种模板,具备CMS基本功能,也有空模板方便 ...

  5. manim边学边做--立方体和棱柱体

    本篇介绍Manim中创建三维立体的两个常用对象:Cube和Prism. Cube在制作动画时,可以用于展示立体几何中的立方体概念,或者通过旋转.缩放等动画效果来帮助理解三维空间中的几何变换. Pris ...

  6. php 安装扩展 event

    本地环境php8.1,然后我想安装event扩展,找了找资料,直接一句话 sudo pecl install event 然后执行的过程中提示这些 configure.ac:165: the top ...

  7. Golang之开源项目汇总

    汇总一些Golang一些开源项目,平常可以多学习一下源码与项目精髓 pocketbase 集成简单, 开箱即用,拥有简介的后台管理面板 该系统内置试试数据库与rest api, Google,gith ...

  8. 解决GitHub无法访问问题

    作为开发者,经常使用借助GitHub进行开发,但是最近一直无法访问github.com站点,决定搞一下!!! 由于国内某些原因,导致我们有时候不能访问到 www.github.com.此时我们必须找到 ...

  9. 微服务-SpringBoot

    基础知识 微服务主旨就是将一个大型系统拆分为多个小型服务. 多个服务之间可以是异构的.单体服务在大型项目下很难维护. 智能端点与哑管道:就是消息之间通信只传送消息,而不做校验. SpringCloud ...

  10. 解决Your project does not reference问题

    错误现象 vs编译时,报错: Your project does not reference ".NETFramework,Version=v##" framework. Add ...