首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

​.NET手撸2048小游戏

本文将再次使用我自制的“准游戏引擎” 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

1.3K30

5-3 绘制图形

为了看得清楚,在窗体的四周留出了一部分边缘,使用绝对像素值,将坐标原点定位在(30,窗体高度-100),按钮的上方。随着窗体大小的变化,横坐标轴根据窗体高度绘制在不同位置。 ?...当我们在图像上绘制完成时,没有将绘制的结果同步显示在控件的图像中,这时如果我们保存文件,能够看到文件中的变化,如果我们希望同时在窗体控件中看到变化,以确定是否保存修改。...需调用图片框的刷新方法来更新图像对象:PictureBox.Refresh()。...属性 说明 Size 获取此图像的以像素为单位的宽度和高度 Width 获取此 Image 的宽度 Height 获取此 Image 的高度 方法 说明 FromFile 从指定的文件创建 Image。...Save 将此图像以指定的格式保存到指定的流中。 RotateFlip 此方法旋转、翻转或者同时旋转和翻转 Image。 表5-6 Bitmap类的常用属性及方法

1.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C# 从零开始写 SharpDx 应用 绘制基础图形

    ,在创建的过程需要指定宽度和高度 _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 方法,传入椭圆和线条颜色,可选线条宽度和样式

    2.4K10

    抖音火爆表白小程序(C#语言实现)

    最近在学习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上,记得素质三连,传送门

    1.8K20

    【C#】分享一个弹出容器层,像右键菜单那样召即来挥则去

    新增的DrawSizeGrip方法就是绘制方法,是protected virtual的,所以如果你看不上我画的这个,可以在子类重写该方法画你自己满意的(题外,画这个我还参考了VS2010的效果,不过是相反的...注:最后的demo没更新,请重新取FloatLayerBase.cs源码就好 ------------------201508240846原文(已更新)------------------ 背景: 有时候我们需要开一个简单的窗口来做一些事...、图标以及文本框中右键弹出的那种菜单,.net是通过调API的方式来操作这样的菜单,而后者则完全是.net实现,更多信息请参考MSDN,此处不展开),因为ContextMenu的Show是阻塞式的,正合我意...上,也没见过原生菜单上出现过文本框、复选框等奇怪的东西,如果您知道怎么扩展原生菜单,还望不吝赐教,先行谢过!...pt.Offset(c.Location); } return pt; } /// /// 更新边框宽度

    2.8K20

    掌握C#技能:PDF转图片轻松搞定

    今天给大家分享一下如何通过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

    94362

    DirectX 使用 Vortice 从零开始控制台创建 Direct2D1 窗口修改颜色

    使用 Vortice 底层库,能让 C# 代码比较方便的和 DirectX 对接 从设计上,此 Vortice 库和 SharpDx 是对 DirectX 的低级封装,低级封装意味着将会让咱在开发时,必须了解非常的细节...Win32 的概念,以及 DirectX 是什么,和 .NET 框架的基础知识加 C# 的基础语法等知识。...这里获取到的抽象的显示适配器接口,在大部分情况下都是和具体的显卡相关的,但是不代表着一定就是真实的显卡 下图是从官方文档拷贝的,一个电脑加两个显卡的对象关系 先尝试使用 IDXGIFactory6 提供的...方法,尝试获取到更新的版本的接口对象。...如果发现自己照着写,跑不起来,推荐使用本文的项目跑一下对比代码 代码 本文的代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹

    1.2K30

    分享一个在 dotnet 里使用 D2D 配合 AOT 开发小而美的应用开发经验

    成品文件体积不超过 10MB 且运行内存稳定在 60MB 以内,满帧率运行但 CPU 近乎不动 此测试应用通过 Win32 裸窗口创建方式创建窗口且开启窗口消息循环。...以下是我的制作过程所需的依赖库和框架 整个测试应用采用了 .NET 8 的框架,用于更好的支持 AOT 发布 使用了 Vortice 系列库用于对 DirectX 的封装,方便让编写调用 DirectX...我将会在本文末尾告诉大家本文的代码的下载方法 本文仅仅是分享我的开发经验,不包含 DirectX 的前置知识。...如果不熟悉 D2D 和 DirectX 还请以看着玩的心态阅读本文 一开始采用了 DirectX 使用 Vortice 从零开始控制台创建 Direct2D1 窗口修改颜色 和 dotnet DirectX...10MB 大小 我认为这个技术可以用来制作一些小而美的工具,甚至是不用考虑 x86 的,只需考虑 x64 的机器上运行的应用的安装包制作程序。

    14110

    【愚公系列】2024年01月 GDI+绘图专题 DrawString

    欢迎 点赞✍评论⭐收藏 前言 DrawString是C#中Graphics类的一个方法,用于在指定的位置绘制文本。在WinForm应用程序中使用DrawString,可以在窗体或控件上绘制文本。...您可以根据需要更改字体,颜色和位置等参数,以根据您的应用程序的需要在窗体或控件上绘制文本。...一、DrawString 1.制表位 在GDI+中,通过使用TabStops属性和StringFormat类,可以在绘图时使用像素或百分比的制表位来对齐文本。这对于制作表格和对齐文本非常有用。...在此示例中,我们在50像素处设置了一个制表位,并在100像素的位置和200像素的位置处指定了两个制表符。...我们在 Form1_Paint 事件处理程序中使用MeasureString方法来测量一个字符串的大小,然后在屏幕上绘制该字符串并用红色边框标记该字符串的大小。

    53111

    dotnet 分享使用 D2D 绘制界面加 AOT 发布的应用开发经验

    成品文件体积不超过 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 的机器上运行的应用的安装包制作程序。

    15110

    【愚公系列】2023年11月 Winform控件专题 Form控件详解

    以下是使用MainMenuStrip的基本步骤:1.在设计窗体时,将MainMenuStrip控件拖放到窗体上。2.在MainMenuStrip中添加菜单和子菜单。...默认情况下,窗体不处理键盘消息,而是将其传递给包含的控件。...你可以通过以下步骤来设置一个控件的ClientSize属性:选中需要设置ClientSize属性的控件。在属性窗口中找到ClientSize属性,并输入想要的宽度和高度值。确认修改。...除了在设计界面时设置ClientSize属性外,你还可以在代码中动态设置该属性。...自定义窗体:通过在Form上添加其它控件和自定义布局,可以创建各种不同类型的自定义窗体。3.具体案例创建一个Winform应用程序,并在Form1中添加一个Label控件和一个Button控件。

    2.6K21

    【C#】分享一个可携带附加消息的增强消息框MessageBoxEx

    -------- 首先感谢猿友E204在回复中的反馈。...同时,在没有附加消息的时候,你仍然可以像标准消息框一样使用它,所以,如果你跟我一样不会用到标准消息框的IWin32Window、MessageBoxOptions和Help相关参数的话,基本上你可以在整个项目中全程用此消息框替换掉标准消息框...其中第3个参数就是附加消息,可接受string和Exception类的实例,其余参数的位置和意义与标准消息框一致。...此外按钮区会根据按钮可见情况控制最小宽度,它与上面的MessageViewer的最小高度共同构成了整个对话框的最小尺寸MinimumSize PanelBasic上的4个按钮分别是【详细信息】按钮和其它...所以这个ToggleButton实际上是由一个ToolBar和一个ToolBarButton组成的看起来像一个单一控件的东西,那为什么它还是继承自Control而不是直接用ToolBar呢,我承认这里面有练手的原因

    2K10

    【愚公系列】2023年12月 GDI+绘图专题 图形图像的重绘

    重绘可以在屏幕上直接进行,也可以在内存中进行,最后再将修改后的图形或图像显示在屏幕上。 在计算机图形学中,图形图像的重绘通常是使用图形库或绘图软件完成的。...一、图形图像的重绘 1.放大圆形半径案例 下面是一个简单的WinForms应用程序,用于在窗体中绘制和重绘一个圆形: using System; using System.Drawing; using...在OnPaint方法中,使用Graphics对象进行绘制,可以使用GDI+提供的各种绘图函数和属性来实现不同的效果。...2.缩放矩形长宽 在WindForm中,SetStyle、Invalidate、Update 和 Refresh 是用于处理界面控件的重要方法。...让我为你详细解释每个方法的作用和用法: SetStyle 方法: 作用:SetStyle 方法用于设置控件的样式和行为属性。 用法:你可以使用此方法来启用或禁用控件的不同样式和属性。

    26211

    C# dotnet 使用 OpenXml 解析 PPT 元素的坐标和宽度高度

    本文将告诉大家如何从 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();

    1.7K10

    Qt编写自定义控件53-自定义宽高下拉框

    一、前言 默认的qcombobox控件,如果元素item中的内容过长超过控件本身的宽度的话,会自动切掉变成省略号显示,有些应用场景不希望是省略号显示,希望有多长就显示多长,还有一种应用场景是需要设置下拉元素的高度为指定的高度...,比如很多触摸屏上,如果程序中的下拉框太小,手指很不好点,很容易误操作,为了杜绝这种误操作,可以将下拉框高度变大,当然更好的办法还是类似于手机app一样弹出一个大大的滑动选择框会更好。...二、实现的功能 1:可设置下拉框元素高度 2:可设置下拉框元素宽度 3:可设置是否自动调整下拉框元素宽度,根据元素宽高自动调整 三、效果图 [在这里插入图片描述] 四、头文件代码 #ifndef COMBOBOX_H...linux等,不乱码,可直接集成到Qt Creator中,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。...不定期增加控件和完善控件,不定期更新SDK,欢迎各位提出建议,谢谢!

    2.1K20

    WPF 自己封装 Skia 差量绘制控件

    ,而不能在原有上一次绘制的基础上绘制新的内容。...,但是在 WriteableBitmap 里面一定存在内存和显存的拷贝,这部分虽然在 DirtyRect 很小的时候几乎不耗性能,但是如果是在 4k 下完全重新绘制,还是稍微有点伤的。...=> (int) Height; } 也就是说在使用 SkiaCanvas 控件的时候,需要先设置他的宽度和高度,也不支持后续更改哈 在创建完成了 SKSurface 字段,就可以通过调用他的绘制方法在...或者换句话说,这里的绘制逻辑有坑在于不能做到对准界面更新 上面这个方法是提供差量更新的,也就是每次绘制的内容都会在上一次画布的基础上继续绘制 下面写一点代码试试,在鼠标划过应用时,绘制出鼠标划过的点,将这些点连为线...Width="1920" Height="1080" Margin="10,10,10,10"> 上面代码给 SkiaCanvas 一个固定的宽度和高度

    1.1K30

    Windows桌面软件开发-Win桌面客户端开发神器 第二课

    带你走过C#基础知识这个门槛。所以不用着急。 其中看到朋友评论说,感觉文章内容很简单,也有的说工作中几乎不用了。在这里我要声明一下,这系列课程是带领你从小白走向编程高峰的教程。...在界面上显示控件的方式很简单。只需要把在工具箱中的拖拽到窗体设计界面就可以了。 ? 直接拖拽就可以。 介绍几个常用的控件:他们对应的样子和工具箱位置 如下: 下面我们将逐个介绍每个控件的使用方式。...CheckBox(复选框) 设置复选框的状态: 更改复选框的属性,Checked:True表示选中,False表示不选中: 显示的文本当然老办法: ? ?...会根据控件的大小进行高度和宽度的拉伸: AutoSize(自动尺寸): ? 根据图片的大小显示。自动拉伸控件的高和宽度。 CenterImage(居中显示): ? 如果图片控件过大,会居中显示图片。...每日更新原创IT编程技术及日常实用技术文章。 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是不在话下。 END.

    9.5K41
    领券