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. 周六晚11实习生上线数据观测突发问题(涉及MYSQL,Hive等)

    前提 有点恐怖,上次需求上线后,部分线上数据观测要留到11月初,上次是一个税收相关的需求,已有功能的线上数据观察已经完成,还剩下部分只有在十一月初才可以观察 简单提一嘴(非技术相关) 之前把hive ...

  2. 经典C语言题目——打印罗汉塔图形

    打印如下图形: ++++1 +++22 ++333 +4444 55555 点击查看代码 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> ...

  3. Codeforces 777 题目研讨

    题目连接 A B C D E 题目分析 A 难度:普及− 题面翻译: 给你三张牌:\(0\),\(1\),\(2\). 最初选一张,然后依次进行 \(n\) 次交换,交换规则为:中间一张和左边的一张, ...

  4. 干货分享:Air700ECQ的硬件设计,第一部分

    ​ 一.绪论 Air700ECQ是一款基于移芯EC716E平台设计的LTE Cat 1无线通信模组.支持移动双模FDD-LTE/TDD-LTE的4G远距离无线传输技术.以极小封装,极高性价比,满足Io ...

  5. delphi Image32 图片转换成SVG

    image32中有2种算法转换图像为svg,一种是按透明度计算找边缘,另一种是分析像素梯度找边缘,demo代码整理后如下: unit uFrmImageToSVG; interface uses Wi ...

  6. MyBatis入门示例——MyBatis学习笔记之一

    MyBatis是另外一款优秀的ORM框架,前身为iBATIS.凡事预则立,不预则废.鉴于以后的项目可能会用到它,因此决定提前学习.本着分享和督促自己学习的目的,笔者将陆续把学习笔记贴出,希望对朋友们有 ...

  7. 如何使用Python编写一个Lisp解释器

    原文出处: Peter Norvig   译文出处: jnjc(@jnjcc) 本文有两个目的: 一是讲述实现计算机语言解释器的通用方法,另外一点,着重展示如何使用Python来实现Lisp方言Sch ...

  8. Django之gunicorn部署

    安装: pip install gunicorn 启动应用: gunicorn -w 3 -k gthread -e DJANGO_SETTINGS_MODULE=settings.prod Serv ...

  9. 基于docker的常用服务搭建

    使用docker搭建相关服务: 1. MySQL服务 1) 拉取镜像 docker pull mysql:5.7 # 拉取 mysql 5.7 docker pull mysql # 拉取最新版mys ...

  10. MySQL用错了,99%的人已中招

    在我们日常工作中,可能会经常使用MySQL数据库,因为它是开源免费的,而且性能还不错. 在国内的很多公司中,经常被使用. 但我们在MySQL使用过程中,也非常容易踩坑,不信继续往下看. 今天这篇文章重 ...