お絵描きアプリをグレードアップさせよう!Tauri 2.0でアンドゥとリドゥを実装
フロントエンジニアのための「Tauri 2.0」ではじめるRustプログラミング 第5回
ダウンロード 第5回 サンプルファイル (427.2 KB)
サンプルのデータを表示する
独自形式ファイルを読み書きして一筆書きのデータを表示する前に、サンプルデータをプログラムに内蔵させます。サンプルは単なる1次元配列で、前回解説したようにコントロールポイントと頂点の4要素で1つの頂点データになります。具体的なサンプルは、トイプードルの絵です。

トイプードルのサンプル
次のサンプルコードを追記してプロジェクトをデバッグビルドして実行したら、画面下の説明のSampleリンクをクリックすればトイプードルが現れます。変数名をsmpl変数にしましたが、sample変数にするとsample関数と被るのでプログラムが上手く動きません。
(前略)
// 全てのDOMが読み込み完了したら
window.addEventListener("DOMContentLoaded", () => {
(中略)
let smpl = document.querySelector("#sample");
smpl.addEventListener('click', (e) => { sample(); });
});
// サンプルのデータを表示する
function sample() {
_pos = [735,377,735,377,735,285,832,280,904,225,826,201,766,247,829,280,937,279,937,279,896,220,949,205,1023,253,937,279,1033,297,1032,366,1008,440,833,446,786,414,796,386,856,370,881,392,885,434,831,445,732,411,735,378,732,314,764,178,715,424,686,396,544,339,590,234,667,4,789,27,938,-5,1017,31,1179,9,1225,244,1254,440,1103,385,1073,343,1069,177,1075,395,1065,392,1433,605,1436,782,1595,763,1616,843,1602,878,1447,859,1416,943,1301,929,1210,918,1208,859,1245,817,1317,829,1206,815,1209,692,1137,602,1137,602,1225,927,1219,928,1106,964,1024,927,1030,604,1030,604,1019,766,929,596,963,926,947,922,820,954,780,910,768,876,807,576,800,433,800,433];
_current = _pos.length/4;
line();
}
(中略)
サンプルコードの解説
htmlファイルのDOMが読み込み完了したら、idがsampleのセレクタをクリックして「sample」関数を呼ぶようにフックします。
sample関数で、_pos配列に配列の要素をセットします。これはトイプードルのデータです。現在の頂点データ数_current変数を_pos配列の要素数を4で除算します。
コラム:_pos配列の具体例
ここまで「_pos」配列にはベジェ曲線の情報の[コントロールポイントX1,コントロールポイントY1,頂点X1,頂点Y1,コントロールポイントX2,コントロールポイントY2,頂点X2,頂点Y2,・・・]が繰り返し入るように書いてきました。
その具体例としてトイプードルの図形を使ってやっと中身の数値をお見せすることができました。やっぱりこうやって具体的な数値を書かないとなかなかデータの中身は実感できませんね。
アプリアイコンを変更する
「$ cargo-tauri build」でリリースビルドしたりインストーラが作成できることは第1回で解説しました。その際アイコンはデフォルトのままだったので、一度にアプリアイコンを作れる方法を解説します。
アプリアイコンは必ずオリジナルのアイコンに変更してください。1024x1024ピクセルの画像「src-tauri」→「icons」→「app.png」ファイルを用意して、次のコマンドを実行したら、次の図のようにさまざまな大きさのアイコンが作成されます。もちろんプロジェクトがカレントディレクトリの場合です。
$ cargo tauri icon src-tauri/icons/app.png
おわりに
今回はウィンドウサイズに合わせて<canvas>タグの描画領域を広げたり、アンドゥやリドゥをマウスホイールで実装したり、サンプルの絵を描画したりしました。
次回は長らくお待たせしましたが、やっとTauri 2.0の神髄であるバックエンドのRustをプログラミングしていきます。Rustでメニュー機能を使ったりTauriコマンド関数でフロントエンドとデータをやり取りしたりします。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- フロントエンジニアのためのTauri 2.0ではじめるRustプログラミング連載記事一覧
-
- Rustを使って「名前を付けて保存」メニューとファイルを保存する機能を実装しよう!
- デスクトップアプリのメニュー機能を作ろう!「Rust」を使ってバックエンドを動かす方法
- お絵描きアプリをグレードアップさせよう!Tauri 2.0でアンドゥとリドゥを実装
- この記事の著者
-
大西 武(オオニシ タケシ)
1975年香川県生まれ。大阪大学経済学部経営学科中退。プログラミング入門書などを30冊以上商業出版する作家。ドコモでグランプリなどコンテストに20回以上入賞するアーティスト。オリジナルの間違い探し「3Dクイズ」がTVで約10回出題。プロフィールサイト:https://profile.vixar.jp
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
