<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>画图和动画 on 菠萝学</title><link>https://www.poloxue.com/docs/gofyne/03-canvas/</link><description>Recent content in 画图和动画 on 菠萝学</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><managingEditor>poloxue123@gmail.com (POLO XUE)</managingEditor><webMaster>poloxue123@gmail.com (POLO XUE)</webMaster><copyright>© 2026 POLO XUE</copyright><lastBuildDate>Thu, 21 May 2026 19:07:14 +0800</lastBuildDate><atom:link href="https://www.poloxue.com/docs/gofyne/03-canvas/index.xml" rel="self" type="application/rss+xml"/><item><title>矩形 Rectangle</title><link>https://www.poloxue.com/docs/gofyne/03-canvas/01-rectangle/</link><pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/03-canvas/01-rectangle/</guid><description>&lt;p&gt;&lt;code&gt;canvas.Rectangle&lt;/code&gt; 是 Fyne 中最简单的画布对象。它显示指定颜色的区块。您也可以使用 &lt;code&gt;FillColor&lt;/code&gt; 字段设置颜色。&lt;/p&gt;
&lt;p&gt;在这个示例中，矩形填充了窗口，因为它是唯一的内容元素。&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;package&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#e6db74"&gt;&amp;#34;image/color&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#e6db74"&gt;&amp;#34;fyne.io/fyne/v2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#e6db74"&gt;&amp;#34;fyne.io/fyne/v2/app&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#e6db74"&gt;&amp;#34;fyne.io/fyne/v2/canvas&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;myApp&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;app&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;New&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;w&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;myApp&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;NewWindow&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;矩形&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;rect&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;canvas&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;NewRectangle&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;color&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;White&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;w&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;SetContent&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;rect&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;w&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Resize&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;fyne&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;NewSize&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;150&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;w&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;ShowAndRun&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;其他的 &lt;code&gt;fyne.CanvasObject&lt;/code&gt; 类型有更多的配置，让我们&lt;a href="https://www.poloxue.com/docs/gofyne/03-canvas/02-text/" &gt;接下来&lt;/a&gt;看看 &lt;code&gt;canvas.Text&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>文本 Text</title><link>https://www.poloxue.com/docs/gofyne/03-canvas/02-text/</link><pubDate>Sun, 05 Jan 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/03-canvas/02-text/</guid><description>&lt;p&gt;&lt;code&gt;canvas.Text&lt;/code&gt; 用于 Fyne 内的所有文本渲染。它通过指定文本和文本颜色来创建。文本使用当前主题指定的默认字体渲染。&lt;/p&gt;
&lt;p&gt;文本对象允许某些配置，如 &lt;code&gt;Alignment&lt;/code&gt; 和 &lt;code&gt;TextStyle&lt;/code&gt; 字段，如此示例中所示。如果你想使用等宽字体，可以指定 &lt;code&gt;fyne.TextStyle{Monospace: true}&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>线条 Line</title><link>https://www.poloxue.com/docs/gofyne/03-canvas/03-line/</link><pubDate>Wed, 08 Jan 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/03-canvas/03-line/</guid><description>&lt;p&gt;&lt;code&gt;canvas.Line&lt;/code&gt; 对象从 &lt;code&gt;Position1&lt;/code&gt;（默认是左上角）画到 &lt;code&gt;Position2&lt;/code&gt;（默认是右下角）。你可以指定它的颜色，并且可以改变笔触宽度，否则默认为 &lt;code&gt;1&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;线的位置可以使用 &lt;code&gt;Position1&lt;/code&gt; 或 &lt;code&gt;Position2&lt;/code&gt; 字段，或者使用 &lt;code&gt;Move()&lt;/code&gt; 和 &lt;code&gt;Resize()&lt;/code&gt; 函数来操作。例如，宽度为 0 的区域会显示为垂直线，而高度为 0 则会是水平线。&lt;/p&gt;</description></item><item><title>圆 Circle</title><link>https://www.poloxue.com/docs/gofyne/03-canvas/04-circle/</link><pubDate>Sat, 11 Jan 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/03-canvas/04-circle/</guid><description>&lt;p&gt;&lt;code&gt;canvas.Circle&lt;/code&gt; 定义了一个由指定颜色填充的圆形。您还可以设置 &lt;code&gt;StrokeWidth&lt;/code&gt;，因此显示不同的 &lt;code&gt;StrokeColor&lt;/code&gt;，如此示例中所示。&lt;/p&gt;
&lt;p&gt;圆形将填充通过调用 &lt;code&gt;Resize()&lt;/code&gt; 或由其控制的布局指定的空间。由于示例将圆形设置为窗口内容，它将调整大小以填充窗口，存在基本的内边距（由主题控制）。&lt;/p&gt;</description></item><item><title>图片 Image</title><link>https://www.poloxue.com/docs/gofyne/03-canvas/05-image/</link><pubDate>Tue, 14 Jan 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/03-canvas/05-image/</guid><description>&lt;p&gt;&lt;code&gt;canvas.Image&lt;/code&gt; 在 Fyne 中代表一个可缩放的图像资源。它可以从资源（如示例所示）、图像文件、包含图像的 URI 位置、&lt;code&gt;io.Reader&lt;/code&gt; 或内存中的 Go &lt;code&gt;image.Image&lt;/code&gt; 加载。&lt;/p&gt;
&lt;p&gt;默认的图像填充模式是 &lt;code&gt;canvas.ImageFillStretch&lt;/code&gt;，它会导致图像填充指定的空间（通过 &lt;code&gt;Resize()&lt;/code&gt; 或布局）。或者，你可以使用 &lt;code&gt;canvas.ImageFillContain&lt;/code&gt; 以确保保持纵横比并且图像在边界内。此外，你可以使用 &lt;code&gt;canvas.ImageFillOriginal&lt;/code&gt;（如此示例中所用），以确保它也具有等于原始图像大小的最小尺寸。&lt;/p&gt;</description></item><item><title>矢量 Raster</title><link>https://www.poloxue.com/docs/gofyne/03-canvas/06-raster/</link><pubDate>Fri, 17 Jan 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/03-canvas/06-raster/</guid><description>&lt;p&gt;&lt;code&gt;canvas.Raster&lt;/code&gt; 类似于图像，但在屏幕上为每个像素精确绘制一个点。这意味着，随着用户界面缩放或图像调整大小，将请求更多像素来填充空间。为此，我们使用一个 &lt;code&gt;Generator&lt;/code&gt; 函数，如此示例所示——它将用于返回每个像素的颜色。&lt;/p&gt;</description></item><item><title>渐变 Gradient</title><link>https://www.poloxue.com/docs/gofyne/03-canvas/07-gradient/</link><pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/03-canvas/07-gradient/</guid><description>&lt;p&gt;最后一个画布原始类型是 Gradient，可用作 &lt;code&gt;canvas.LinearGradient&lt;/code&gt; 和 &lt;code&gt;canvas.RadialGradient&lt;/code&gt;，用于绘制从一种颜色到另一种颜色的渐变，有多种模式。你可以使用 &lt;code&gt;NewHorizontalGradient()&lt;/code&gt;、&lt;code&gt;NewVerticalGradient()&lt;/code&gt; 或 &lt;code&gt;NewRadialGradient()&lt;/code&gt; 创建渐变。&lt;/p&gt;</description></item><item><title>动画 Animation</title><link>https://www.poloxue.com/docs/gofyne/03-canvas/08-animation/</link><pubDate>Thu, 23 Jan 2025 00:00:00 +0000</pubDate><author>poloxue123@gmail.com (POLO XUE)</author><guid>https://www.poloxue.com/docs/gofyne/03-canvas/08-animation/</guid><description>&lt;p&gt;Fyne 包含一个动画框架，允许您在一段时间内平滑地过渡画布属性从一个值到另一个值。动画可以包含任何代码，这意味着可以管理任何类型的对象属性，但是内置了尺寸、位置和颜色的动画。&lt;/p&gt;</description></item></channel></rss>