Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Enable Glyphs to have an outline

未关闭
#297 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
35/100
Issue 类型
功能
描述清晰度
描述清楚
活跃度
停滞
技术栈
go

调研方向

从 vg/draw/canvas.go 开始,阅读 GlyphStyle 和字形的 DrawGlyph 实现,然后查看 pull request 298,了解现有的提议方案。当字形可以使用可选轮廓进行渲染,并且在未配置轮廓时保持现有行为,即表示完成。

由索引模型根据 Issue 内容生成。

描述

screen shot 2016-07-15 at 4 42 05 pm

Just in case anyone is wanting to ask why we would do this, 1. other libraries do it, and 2. In my case I need to make my application create a graph that looks like the current ones (with an outline). Consider for example the javascript library, chart.js

A patch for this could be done without altering the API. Here is my current solution:

--- a/vg/draw/canvas.go
+++ b/vg/draw/canvas.go
@@ -55,6 +55,12 @@ type GlyphStyle struct {
        // Radius specifies the size of the glyph's radius.
        Radius vg.Length

+       // Width of the line around the glyph. If set, LineColour is used to outline the glyph
+       Width vg.Length
+
+       // Outline glyph with this color if Width is set.
+       LineColor color.Color
+
        // Shape draws the shape of the glyph.
        Shape GlyphDrawer
 }
@@ -106,6 +112,11 @@ func (CircleGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point) {
        p.Arc(pt, sty.Radius, 0, 2*math.Pi)
        p.Close()
        c.Fill(p)
+
+       if sty.Width > 0 {
+               c.SetLineStyle(LineStyle{Color: sty.LineColor, Width: sty.Width})
+               c.Stroke(p)
+       }
 }

 // RingGlyph is a glyph that draws the outline of a circle.

This simply add's two fields, if you want to set an outline, you can set the new Width field, and the new LineColor field.

Patch: https://github.com/gonum/plot/pull/298

主要语言
Go
星标
3k
派生
202
PR 合并指标
30 天内没有已合并 PR

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

gonum/plot 的其他 Issue

查看 gonum/plot 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。