本文将再次使用我自制的“准游戏引擎” FlysEngine,从空白窗口开始,演示如何“手撸” 2048小游戏,并在编码过程中感受 C#的魅力和 .NET编程的快乐。...它有两大特点: 视图层完全没有状态; 数据的变动不会直接影响呈现的画面。 也就是所有的数据更新,都只应体现在内存中。游戏中的数据变化可能非常多,应该积攒起来,一次性更新到界面上。...另外, MVC还有一个好处,就是假如代码需要移植平台时(如 C#移植到 html5),只需更新呈现层即可,模型层所有逻辑都能保留。...= 4; void Main() { using var g = new GameWindow() { ClientSize = new System.Drawing.Size(400, 400...ValueTuple是 C# 7.0的新功能,它和 C# 6.0新增的 Tuple的区别有两点: ValueTuple可以通过 (x,y)这样的语法内联,而 Tuple要使用 Tuple.Create
为了看得清楚,在窗体的四周留出了一部分边缘,使用绝对像素值,将坐标原点定位在(30,窗体高度-100),按钮的上方。随着窗体大小的变化,横坐标轴根据窗体高度绘制在不同位置。 ?...当我们在图像上绘制完成时,没有将绘制的结果同步显示在控件的图像中,这时如果我们保存文件,能够看到文件中的变化,如果我们希望同时在窗体控件中看到变化,以确定是否保存修改。...需调用图片框的刷新方法来更新图像对象:PictureBox.Refresh()。...属性 说明 Size 获取此图像的以像素为单位的宽度和高度 Width 获取此 Image 的宽度 Height 获取此 Image 的高度 方法 说明 FromFile 从指定的文件创建 Image。...Save 将此图像以指定的格式保存到指定的流中。 RotateFlip 此方法旋转、翻转或者同时旋转和翻转 Image。 表5-6 Bitmap类的常用属性及方法
100 self.rect_wide = 10#球拍高度(宽度) def rectmove(self): # 获取鼠标位置参数 self.mouse_x...self.closestpoint_x - self.ball_x, 2) + math.pow(self.closestpoint_y - self.ball_y, 2)) # 球在球拍上左、上中...self.ball_x, 2) + math.pow(self.closestpoint_by - self.ball_y, 2)) # 球在砖块上左、上中、上右3种情况的碰撞检测...这个跟球在球拍的上左,上中,上右是一样的类似解析,这就不概述了 if self.distanceb 的初始化,具体初始化看前面关于Main的类 super(GameWindow, self).
,在创建的过程需要指定宽度和高度 _renderForm = new RenderForm(); _renderForm.ClientSize = new...C# 从零开始写 SharpDx 应用 初始化dx修改颜色的代码 在 InitializeDeviceResources 函数里面更改一些参数,用于创建资源和初始化 var backBufferDesc...可选的是线条的宽度,和样式 下面代码是作为添加所有参数的例子 _d2dRenderTarget.BeginDraw(); var brush = new...{ _d2dRenderTarget.DrawRectangle(rect, brush); } 注意 RawRectangleF 的构造函数传入的是左上右下而不是左上角的点和宽度高度...(roundedRectangle, brush); 运行上面代码,可以看到填充的圆角矩形 椭圆 画椭圆使用 DrawEllipse 方法,传入椭圆和线条颜色,可选线条宽度和样式
最近在学习C#编程语言,接触到了winform,记得曾经在抖音上看到过这样一个小程序,觉得很有意思,就用C#语言实现了下,实现起来很简单(可以说没有任何技术含量)程序执行后效果如下。...", "^v^"); this.Dispose(); 添加[算了吧]事件 选中[算了吧]按钮,点击右侧属性栏中的事件图标,在下面找到MouseEnter事件,双击MouseEnter事件添加如下代码。...int x = this.ClientSize.Width - button2.Width; int y = this.ClientSize.Height - button2.Height; Random...如果我们要将此程序发送给小伙伴,必须将此目录下的所有文件打包发送,并且如果小伙伴的电脑上没有.NET5.0框架,运行程序会提示安装框架。...写在后面 这个程序说实话一点技术含量没有,唯一值得说道的就是按钮移动不让用户点击的想法和算法。 源代码放在了github上,记得素质三连,传送门
新增的DrawSizeGrip方法就是绘制方法,是protected virtual的,所以如果你看不上我画的这个,可以在子类重写该方法画你自己满意的(题外,画这个我还参考了VS2010的效果,不过是相反的...注:最后的demo没更新,请重新取FloatLayerBase.cs源码就好 ------------------201508240846原文(已更新)------------------ 背景: 有时候我们需要开一个简单的窗口来做一些事...、图标以及文本框中右键弹出的那种菜单,.net是通过调API的方式来操作这样的菜单,而后者则完全是.net实现,更多信息请参考MSDN,此处不展开),因为ContextMenu的Show是阻塞式的,正合我意...上,也没见过原生菜单上出现过文本框、复选框等奇怪的东西,如果您知道怎么扩展原生菜单,还望不吝赐教,先行谢过!...pt.Offset(c.Location); } return pt; } /// /// 更新边框宽度
今天给大家分享一下如何通过C#实现pdf转图片的案例,有需要的朋友可以看一下,大家如果有问题可以互相交流学习!...一、类库介绍Free Spire.PDF for .NET作为一个独立的免费PDF优秀类库,使用它不需要在系统上安装 Adobe Acrobat 或任何其他第三方软件/库,可以在.NET应用程序中实现pdf...:从 PDF 文档中提取图像、文本、页面和附件、支持图层、透明图形、颜色空间和条形码创建、插入交互式元素等三、支持的转换格式• 将网页 HTML、HTML ASPX 转换为 PDF• 将图像(Jpeg、...,大家根据自己的Net版本选择相应的类库版本。..., page.Canvas.ClientSize.Height); // 保存 PDF 文档到文件 document.SaveToFile(@"E:\测试\demo.pdf
使用 Vortice 底层库,能让 C# 代码比较方便的和 DirectX 对接 从设计上,此 Vortice 库和 SharpDx 是对 DirectX 的低级封装,低级封装意味着将会让咱在开发时,必须了解非常的细节...Win32 的概念,以及 DirectX 是什么,和 .NET 框架的基础知识加 C# 的基础语法等知识。...这里获取到的抽象的显示适配器接口,在大部分情况下都是和具体的显卡相关的,但是不代表着一定就是真实的显卡 下图是从官方文档拷贝的,一个电脑加两个显卡的对象关系 先尝试使用 IDXGIFactory6 提供的...方法,尝试获取到更新的版本的接口对象。...如果发现自己照着写,跑不起来,推荐使用本文的项目跑一下对比代码 代码 本文的代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹
成品文件体积不超过 10MB 且运行内存稳定在 60MB 以内,满帧率运行但 CPU 近乎不动 此测试应用通过 Win32 裸窗口创建方式创建窗口且开启窗口消息循环。...以下是我的制作过程所需的依赖库和框架 整个测试应用采用了 .NET 8 的框架,用于更好的支持 AOT 发布 使用了 Vortice 系列库用于对 DirectX 的封装,方便让编写调用 DirectX...我将会在本文末尾告诉大家本文的代码的下载方法 本文仅仅是分享我的开发经验,不包含 DirectX 的前置知识。...如果不熟悉 D2D 和 DirectX 还请以看着玩的心态阅读本文 一开始采用了 DirectX 使用 Vortice 从零开始控制台创建 Direct2D1 窗口修改颜色 和 dotnet DirectX...10MB 大小 我认为这个技术可以用来制作一些小而美的工具,甚至是不用考虑 x86 的,只需考虑 x64 的机器上运行的应用的安装包制作程序。
欢迎 点赞✍评论⭐收藏 前言 DrawString是C#中Graphics类的一个方法,用于在指定的位置绘制文本。在WinForm应用程序中使用DrawString,可以在窗体或控件上绘制文本。...您可以根据需要更改字体,颜色和位置等参数,以根据您的应用程序的需要在窗体或控件上绘制文本。...一、DrawString 1.制表位 在GDI+中,通过使用TabStops属性和StringFormat类,可以在绘图时使用像素或百分比的制表位来对齐文本。这对于制作表格和对齐文本非常有用。...在此示例中,我们在50像素处设置了一个制表位,并在100像素的位置和200像素的位置处指定了两个制表符。...我们在 Form1_Paint 事件处理程序中使用MeasureString方法来测量一个字符串的大小,然后在屏幕上绘制该字符串并用红色边框标记该字符串的大小。
self.enemy_speed = 3 # 开关 #开:表示可以移动可以绘制可以杀敌人 # 关闭:当子弹移动到窗口外面的时候回:表示不移动不绘制也不杀敌人...random.randint(0, WINDOW_WIDTH-self.enemy_rect[2]) self.enemy_rect[1] = -self.enemy_rect[3] # 0, 0, 宽度...self.bullet_list = [bullet.Bullet() for _ in range(1000)] def move_up(self): # 上移动...self.hero.move_right() def gameOver(self): pygame.quit() sys.exit() # 函数更新...def update(self): pygame.display.update() if __name__ == '__main__': game = GameWindow
成品文件体积不超过 10MB 且运行内存稳定在 60MB 以内,满帧率运行但 CPU 近乎不动 整个测试应用采用了 .NET 8 的框架,用于更好的支持 AOT 发布 使用了 Vortice 系列库用于对...我将会在本文末尾告诉大家本文的代码的下载方法 本文仅仅是分享我的开发经验,不包含 DirectX 的前置知识。...如果不熟悉 D2D 和 DirectX 还请以看着玩的心态阅读本文 一开始采用了 DirectX 使用 Vortice 从零开始控制台创建 Direct2D1 窗口修改颜色 和 dotnet DirectX...然后为了让界面动起来,我添加了名为 DrawingInfo 的结构体,用于存放每个圆形的坐标和大小等信息 readonly record struct DrawingInfo(System.Numerics.Vector2...10MB 大小 我认为这个技术可以用来制作一些小而美的工具,甚至是不用考虑 x86 的,只需考虑 x64 的机器上运行的应用的安装包制作程序。
以下是使用MainMenuStrip的基本步骤:1.在设计窗体时,将MainMenuStrip控件拖放到窗体上。2.在MainMenuStrip中添加菜单和子菜单。...默认情况下,窗体不处理键盘消息,而是将其传递给包含的控件。...你可以通过以下步骤来设置一个控件的ClientSize属性:选中需要设置ClientSize属性的控件。在属性窗口中找到ClientSize属性,并输入想要的宽度和高度值。确认修改。...除了在设计界面时设置ClientSize属性外,你还可以在代码中动态设置该属性。...自定义窗体:通过在Form上添加其它控件和自定义布局,可以创建各种不同类型的自定义窗体。3.具体案例创建一个Winform应用程序,并在Form1中添加一个Label控件和一个Button控件。
-------- 首先感谢猿友E204在回复中的反馈。...同时,在没有附加消息的时候,你仍然可以像标准消息框一样使用它,所以,如果你跟我一样不会用到标准消息框的IWin32Window、MessageBoxOptions和Help相关参数的话,基本上你可以在整个项目中全程用此消息框替换掉标准消息框...其中第3个参数就是附加消息,可接受string和Exception类的实例,其余参数的位置和意义与标准消息框一致。...此外按钮区会根据按钮可见情况控制最小宽度,它与上面的MessageViewer的最小高度共同构成了整个对话框的最小尺寸MinimumSize PanelBasic上的4个按钮分别是【详细信息】按钮和其它...所以这个ToggleButton实际上是由一个ToolBar和一个ToolBarButton组成的看起来像一个单一控件的东西,那为什么它还是继承自Control而不是直接用ToolBar呢,我承认这里面有练手的原因
在4.4版本中,大家对产品优化的一些建议和意见进行了相应的优化和修复,同时,还新增了一些令人激动的功能和插件。...下面先为大家介绍4.4版本中Smobiler的优化和修复: 优化 1, PageView的AutoPlay默认属性改为True。...3, 设计器中的控件如果移动到相对布局则重置Location。 4, 侧边栏Flex默认为1,防止未设置宽度不显示的问题。...5, 添加TitleHeight属性以可以调整图片详情界面中的Title高度,返回按钮也可根据Title高度调整。 修复 1, 修复ToolBar中的MessageText不再可更改为空的问题。...APP,用C#、VB语言写APP ?
重绘可以在屏幕上直接进行,也可以在内存中进行,最后再将修改后的图形或图像显示在屏幕上。 在计算机图形学中,图形图像的重绘通常是使用图形库或绘图软件完成的。...一、图形图像的重绘 1.放大圆形半径案例 下面是一个简单的WinForms应用程序,用于在窗体中绘制和重绘一个圆形: using System; using System.Drawing; using...在OnPaint方法中,使用Graphics对象进行绘制,可以使用GDI+提供的各种绘图函数和属性来实现不同的效果。...2.缩放矩形长宽 在WindForm中,SetStyle、Invalidate、Update 和 Refresh 是用于处理界面控件的重要方法。...让我为你详细解释每个方法的作用和用法: SetStyle 方法: 作用:SetStyle 方法用于设置控件的样式和行为属性。 用法:你可以使用此方法来启用或禁用控件的不同样式和属性。
本文将告诉大家如何从 PPT 里面解析出通用元素的 x 和 y 的值,以及元素的宽度和高度的值 在开始之前请看 C# dotnet 使用 OpenXml 解析 PPT 文件 在拿到 slidePart.Slide.CommonSlideData.ShapeTree...里面的元素,几乎所有元素都存在坐标和宽度高度,这里的元素我称为通用元素,也就是不是特定的如形状、图片元素 此时的元素应该是继承 OpenXmlElement 类,在这个类里面可以通过 GetFirstChild...element 是 OpenXmlElement 类 拿到了 ShapeProperties 实际上就是 PPT 文件的 p:sppr 内容,在 PPT 里面将会用如下格式设置元素里面的值中 a:xfrm...Emu 上面的类是我自己定义的,有可以抄的代码,请看 C# dontet Office Open XML Unit Converter 我定义了和像素转换的代码 可以通过 Extents 也就是 a:...ext 获取元素的宽度和高度,请看代码 var extents = transform2D.GetFirstChild();
一、前言 默认的qcombobox控件,如果元素item中的内容过长超过控件本身的宽度的话,会自动切掉变成省略号显示,有些应用场景不希望是省略号显示,希望有多长就显示多长,还有一种应用场景是需要设置下拉元素的高度为指定的高度...,比如很多触摸屏上,如果程序中的下拉框太小,手指很不好点,很容易误操作,为了杜绝这种误操作,可以将下拉框高度变大,当然更好的办法还是类似于手机app一样弹出一个大大的滑动选择框会更好。...二、实现的功能 1:可设置下拉框元素高度 2:可设置下拉框元素宽度 3:可设置是否自动调整下拉框元素宽度,根据元素宽高自动调整 三、效果图 [在这里插入图片描述] 四、头文件代码 #ifndef COMBOBOX_H...linux等,不乱码,可直接集成到Qt Creator中,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。...不定期增加控件和完善控件,不定期更新SDK,欢迎各位提出建议,谢谢!
,而不能在原有上一次绘制的基础上绘制新的内容。...,但是在 WriteableBitmap 里面一定存在内存和显存的拷贝,这部分虽然在 DirtyRect 很小的时候几乎不耗性能,但是如果是在 4k 下完全重新绘制,还是稍微有点伤的。...=> (int) Height; } 也就是说在使用 SkiaCanvas 控件的时候,需要先设置他的宽度和高度,也不支持后续更改哈 在创建完成了 SKSurface 字段,就可以通过调用他的绘制方法在...或者换句话说,这里的绘制逻辑有坑在于不能做到对准界面更新 上面这个方法是提供差量更新的,也就是每次绘制的内容都会在上一次画布的基础上继续绘制 下面写一点代码试试,在鼠标划过应用时,绘制出鼠标划过的点,将这些点连为线...Width="1920" Height="1080" Margin="10,10,10,10"> 上面代码给 SkiaCanvas 一个固定的宽度和高度
带你走过C#基础知识这个门槛。所以不用着急。 其中看到朋友评论说,感觉文章内容很简单,也有的说工作中几乎不用了。在这里我要声明一下,这系列课程是带领你从小白走向编程高峰的教程。...在界面上显示控件的方式很简单。只需要把在工具箱中的拖拽到窗体设计界面就可以了。 ? 直接拖拽就可以。 介绍几个常用的控件:他们对应的样子和工具箱位置 如下: 下面我们将逐个介绍每个控件的使用方式。...CheckBox(复选框) 设置复选框的状态: 更改复选框的属性,Checked:True表示选中,False表示不选中: 显示的文本当然老办法: ? ?...会根据控件的大小进行高度和宽度的拉伸: AutoSize(自动尺寸): ? 根据图片的大小显示。自动拉伸控件的高和宽度。 CenterImage(居中显示): ? 如果图片控件过大,会居中显示图片。...每日更新原创IT编程技术及日常实用技术文章。 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是不在话下。 END.
领取专属 10元无门槛券
手把手带您无忧上云