Tech

Golang で図形描画してみた

投稿日:

はじめに

今回は、Goで2Dグラフィックスを描画するために、パッケージの選定と、その中から実際にggを使って描画してみました。

Golangで画像描画する方法

Golangで画像描画するために、まず初めに検討したのは x/image でした。しかし、描画機能はあるものの、図形を描画したり、塗りつぶしたりするような機能はなく、扱うのがかなり面倒そうでした。
そこで、その他のパッケージを探したところ、ggdraw2dを見つけました。

ggは、2Dグラフィックスを簡単に描画できるパッケージで、初めから線・短形・円といった図形を描画できるほか、塗りつぶしやグラデーションをかけることもでき、とにかく簡単に図形描画できるのが特徴です。
draw2dも、ggと同じような描画機能を持っているのですが、特徴としてはベクター描画のライブラリであることです。SVGやPDFで書き出すことかできるので、ラスター画像に比べてより軽量なグラフィックを描画することができます。

この2つの中から、今回は今回はggを選択しました。理由は、今回の調査をするにあたり、golangで書かれたgenerativeartを見ていたのですが、このプロジェクトが画像描画にggを使っていたためです。

ggでの画像描画

導入

go getでggを追加します。

基本的な画像描画

まず、基本的な画像描画の流れを知るために、簡単な図形描画をやってみました。

すると、以下の様な画像が生成できます。

基本的な描画の流れとしては、描画コンテキストを生成し、描画コンテキストのメソッドを使って図形を描画していきます。また、描画に関しては、 DrawXXX 系のメソッドで何をどこに描画するかを指定し、 SetRGB でカラー指定、 Fill()Storoke() で描画方法を指定します。

 

ジェネレーティブしてみた

基本的な描画方法がわかったところで、乱数を使った図形描画をやってみました。ただ描画するだけでは面白くないので、bildを使い、合成モード Addを使って描画してみます。
まず、bildを追加します。

次に、コードを書いていきます。

以下の様な画像が生成されました。合成モードaddを使っているため、色が重なったところは明るくなっています。

 

さらに、ラインを使った図形も合成してみたいと思います。こちらは一気に描画してから、先ほどの画像に合成モード difference で上に合成します。

以下の様な画像が生成されます。

 

さいごに

ggとbildを使って2Dグラフィックスの描画をやってみました。bildを組み合わせることで、単純な描画だけでなく、合成モードを指定して描画することもできたので、ちょっとした表現であれば合成モードを組み合わせて出来そうだなと思いました。

おすすめ書籍

実用 Go言語 ―システム開発の現場で知っておきたいアドバイス エキスパートたちのGo言語 一流のコードから応用力を学ぶ Software Design plus 詳解Go言語Webアプリケーション開発

blog-page_footer_336




blog-page_footer_336




-Tech

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

BLEのペアリングをWiresharkでキャプチャしながら学ぶ

1 はじめに2 ペアリングとボンディング3 暗号化はキャラクタリスティック単位4 ペアリングの流れ4.1 セキュリティリクエスト4.2 ペアリングリクエスト・レスポンス4.3 Passkeyの検証5 ...

【Swift】Xcode13XCTestの新機能、繰り返し実行で遊んでみた。

1 はじめに2 XCTestについて3 繰り返しのテストについて4 実際に使ってみる5 テストコードについて6 テストの設定7 さいごに8 おすすめ書籍 はじめに こんにちは、suzukiです。とうと ...

[C#]Genericsの使い方をまとめてみた。その1

1 はじめに2 Genericsとは3 Genericsの例3.1 Genericsを使わない場合3.2 Genericsを使う場合4 Genericsのメリット5 さいごに6 おすすめ書籍 はじめに ...

Flutterで写真撮影しよう!

1 はじめに2 準備3 実装3.1 プレビューの表示3.2 写真を撮る4 さいごに5 おすすめ書籍 はじめに 今回はFlutterでカメラを使用して、プレビューの表示と写真の撮影を行いたいと思います。 ...

Go言語

[Go初心者]テストについて学習

1 はじめに2 テスト2.1 エラーの値を比較する2.2 エラーの型を比較する3 httptest3.1 httptestの使い方4 さいごに5 おすすめ書籍 はじめに 今回はGo言語のテストについて ...

フォロー

blog-page_side_responsive

2022年12月
 123
45678910
11121314151617
18192021222324
25262728293031

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。