brushes

How check if photoshop brush exist programmatically

╄→гoц情女王★ 提交于 2021-01-29 05:11:21
问题 I'm trying to create a Photoshop Panel for some actions, but I want to know how can I check if the brush already exist in photoshop and if not exist to call a function to install it before the action can be used, I already know how install it, and how run the actions, but I still got some issues detecting if the brush exist on Mac/Windows environment. Any tips about how do this using Javascript? (JSX) 回答1: You can get lists of brush or tool presets using this AM snippet. Note that several

WPF Adorner

允我心安 提交于 2021-01-25 05:01:57
之前做项目时,为了实现类似微信消息数目的效果 image.png ,我之前是修改的ControlTemplate。类似于将一个带数字的控件,放在另一个控件的右上角,来实现的这个效果。 原来WPF有个Adorner,也可以实现这样的效果。 WPF中很多控件,都带Adorner层。这相当于一个控件的装饰层。我们在这里面可以做出很多蛮好的效果。比如错误提示等。 我们要实现上图的那种效果,我们可以做一个附加属性。 public static bool GetShowAdorner(DependencyObject obj) { return ( bool )obj.GetValue(ShowAdornerProperty); } public static void SetShowAdorner(DependencyObject obj, bool value) { obj.SetValue(ShowAdornerProperty, value); } public static readonly DependencyProperty ShowAdornerProperty = DependencyProperty.RegisterAttached( " ShowAdorner " , typeof ( bool ), typeof (MainWindow), new

练手WPF(四)——贪吃蛇小游戏的简易实现(上)

不打扰是莪最后的温柔 提交于 2021-01-03 23:42:24
原文: 练手WPF(四)——贪吃蛇小游戏的简易实现(上) 一. 游戏界面 首先,按照惯例,编辑MainWindow.xaml,先将游戏界面制作好。非常简单: (1)主游戏区依然使用我们熟悉的Canvas控件,大小为640X480像素,设定每小格子为20px,所以横坚坐标的格子数为32x24。见源代码的最后位置。 (2)定位控件我们使用DockPanel,方便放置主菜单。 (3)将按键事件PreviewKeyDown放在Window内。 < Window x:Class ="MoonSnake.MainWindow" xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d ="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local ="clr-namespace:MoonSnake" mc:Ignorable ="d" PreviewKeyDown ="MyCanvas

GDI绘图

孤者浪人 提交于 2020-12-05 06:44:43
什么是GDI+ GDI+ (Graphics Device Interface) 是一种绘图装置接口, 可将应用程序和绘图硬件分隔, 让我们能够编写与装置无关的应用程序。它可以让我们不需注意特定显示装置的详细数据, 便可在屏幕或打印机显示信息。我们可以呼叫 GDI+ 类别所提供的方法, 然后这些方法会适当地呼叫特定的装置驱动程序, 而完成绘图。而且与.NET进行了更好的融合。 GDI (Graphics Device Interface), 是属于绘图方面的 API (Application Programming Interface)。 因为应用程序不能直接控制硬件, 所以当我们要进行绘图的动作时, 必须透过 GDI 才能完成。 确定坐标系:1.确定原点 2.确定x,y轴和方向 Graphics提供了非常多的绘图的方法可以让我们进行绘制。 绘图方法 Graphics 类别的常用绘图方法有: DrawLine(直线)、 DrawRectangle (矩形)、 DrawEllipse (椭圆)、 DrawCurve (曲线)、 DarwArc (弧线)、 DrawPie (扇形)、 DrawLines (多边形)、 DrawPolygon (封闭多边形)、 DrawBezier (贝兹曲线)等。 使用GDI绘制简单的图形 // 绘制一条直线 private void button1

UE4 性能及分析

依然范特西╮ 提交于 2020-11-13 11:13:29
Unreal Engine 4.9 引擎特性 SHARE: 本页面的内容: 通用提示 定位到性能局限的原因 Show Flags 视图模式 如何处理大范围的不同硬件 基于一段时间来生成图表 更多关于性能和分析的话题 在做游戏的过程中, 性能 是个 无所不在 的话题。为了创建梦幻般的画面,我们需要至少游戏帧数至少达到每秒 15 帧。根据不同的平台和游戏类型,这个帧数可能是 30 或者 60,甚至在某些情况下要求更高。 虚幻 引擎 提供了很多功能,它们也有不同的性能特性。为了达到性能的要求会需要对游戏素材和代码进行优化。因此需要能够知道性能花费在何处。这一点可以通过使用引擎的性能分析工具。 每个性能问题都可能是不同的,需要对当前的硬件、软件都有一定的了解。这里我们整理了一些细节应该能在这方面有所帮助。 这篇指南主要涵盖的是渲染的话题,因为通常渲染是性能花费最多的地方。更多的物件,更高的分辨率,更多的灯光,漂亮的材质,所有这些都会在性能上有所影响。 还好是在渲染上,这里要重新获取性能也相对容易,很多渲染的特性都可以直接在控制台中调整。 编辑器的输出日志,或者游戏的控制台中内,可以: 设置控制台变量( cvarname value ) 获取当前的状态( cvarname ) 查看某个变量的帮助( cvarname ? ) 如果需要的话,可以将设置保存到 ConsoleVariables

游戏建模实战教程:《黎明杀机》中的鬼武士,Maya和ZBrush制作全流程

霸气de小男生 提交于 2020-10-18 06:22:43
艺术家介绍: Pom来自泰国,梦想成为3D艺术家。他有绘制漫画的经验,制作喜欢的角色是他表达艺术的一种方式。 这个制作中分享了他的对于日式鬼怪角色的一些制作细节,该角色的原型是基于《黎明杀机Dead by Daylight》中的杀手:鬼武士。 Pom对日本的艺术和文化非常感兴趣,之前就曾创作过一个基于《黎明杀机Dead by Daylight》的日本鬼魂怨灵(The Spirit)。 Pom的另一个作品:日本鬼魂怨灵(The Spirit) Pom查阅了《黎明杀机Dead by Daylight》的游戏概念设计图以及真实的参考资料(盔甲应该怎么样组合起来)作为参考。 雕刻与造型 人物雕刻使用了一个男性的模型在基础制作,而大部分装甲零件也是从基础网格中提取,然后使用Dynamesh进行雕刻一直到形状满意为止,模型完成之后使用ZRemesher清理拓扑。 想学次世代游戏建模,需要免费软件工具和资料包,都可以加q群 630838699【 戳我立即进入学习社区】 Pom在制作中主要使用Clay build up,Dam standard和Move brushes 这三个画笔,但在这个项目中还特别适用了Badking定制的扭绳刷制作鬼武士盔甲和脖子上缠绕的巨大的粗绳子▼ 而胸甲和剑的雕刻则是使用了mask brush▼ 肩部是一个提取的网格,添加了四个圆柱体用来雕刻尖牙和角▼

用c#处理数据:读excel,最小二乘法,wpf画函数图

亡梦爱人 提交于 2020-05-04 21:10:15
最近需要用C#做数据处理,核心是三点:从excel载入数据,处理,画图。折腾了一下午,总算搞得差不多了,记录一下。 首先是用NPOI从excel中载入数据,利用NPOI读取excel不需要安装office,仅依赖于ICSharpCode压缩库,且既能读取office2003格式,也可以读取office2007以上版本的格式,还算是比较好用。 using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; namespace FitAlgorithm { class ExcelHelper { XSSFWorkbook xssfworkbook; DataSet dataSet1 = new DataSet(); void InitializeWorkbook(string path) { //read the template via FileStream, it is suggested to use FileAccess.Read to prevent file lock. //book1.xls

WPF自定义控件 —— 自绘篇

喜你入骨 提交于 2020-05-03 14:07:18
原文: WPF自定义控件 —— 自绘篇 一般来说控件主要是画面呈现、事件的处理、布局自动化,当然完善的控件还应该牵涉设计时、UI自动化测试的定义。 首先我们来说最简单的画面的呈现。 一.在自定义控件上画矩形 增加一个自定义控件类: 打开创建的类重载OnRender函数并注释掉静态构造函数,代码如下 public class CustomerRender : Control { // static CustomerRender() // { // DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomerRender), new FrameworkPropertyMetadata(typeof(CustomerRender))); // } protected override void OnRender(DrawingContext drawingContext) { drawingContext.DrawRectangle(Brushes.Bisque, null , new Rect( 0 , 0 , 50 , 50 )); } } 在Window1这个类中修改如下 public partial class Window1 : Window { public Window1() { InitializeComponent()

WPF自定义空心文字

此生再无相见时 提交于 2020-05-03 13:47:59
原文: WPF自定义空心文字   首先创建一个自定义控件,继承自FrameworkElement,“Generic.xaml”中可以不添加样式。   要自定义空心文字,要用到绘制格式化文本FormattedText类。FormattedText对象提供的文本格式设置功能比WPF提供的已有文本控件提供的相应功能更为强大。调用FormattedText构造函数,可以传入相应的参数,得到我们想要的文本样式。使用 MaxTextWidth 属性可以将文本约束为特定宽度。 文本将自动换行,以避免超过指定宽度。 使用 MaxTextHeight 属性可以将文本约束为特定高度。 超过指定高度的文本将显示一个省略号“…”。   接下来重写OnRender方法,在方法体中调用DrawingContext对象的DrawGeometry方法即可完成文本的绘制工作。 1 public class OutlinedText : FrameworkElement, IAddChild 2 { 3 /// <summary> 4 /// 静态构造函数 5 /// </summary> 6 static OutlinedText() 7 { 8 DefaultStyleKeyProperty.OverrideMetadata( typeof (OutlinedText), new

e.hasMorePages有一个用法

最后都变了- 提交于 2020-04-18 14:35:09
这是下面这个老哥写的,只是写代码太乱,我给整理一下 在打印时,经常用到printPage函数,但是,其中换页打印是令人头痛的问题,经常用了e.HasMorePages = true; 语句之后,所有页面都是重复第一页, 因为e.HasMorePages = true是重新调用printDocument1_PrintPage, 所以每次调用都是从头开始,才会出现所有页面的内容都一样,下面是自己解决这个问题的一个方法: private void printDocument1_PrintPage( object sender, System.Drawing.Printing.PrintPageEventArgs e){ int index= 1 ; switch (index) // 控件打印的页码 { case 1 : index ++ ; // ...一页打印完之后 e.HasMorePages = true ; break ; case 2 : index ++ ; // ...一页打印完之后 e.HasMorePages = true ; break ; case 3 : index ++ ; // ...一页打印完之后 e.HasMorePages = true ; break ; case 4 : index ++ ; e.HasMorePages = false ;