3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Flutter】画像の角を丸くするには?

Posted at

柔らかい印象を持たせたくて、画像の角を丸くしたいことってありますよね。
この記事では、Flutterで画像の角を丸くするための方法を説明していきます。

画像を表示しただけの状態

こちらがとりあえず画面の真ん中に画像を表示しただけの状態です。
しっかりと角は尖っています。
Simulator Screen Shot - iPhone SE (3rd generation) - 2023-01-05 at 16.56.07.png
ソースコードはこんな感じ。

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(20),
          child: Image.asset('images/ochazuke.jpeg'),
        ),
      ),
    );
  }

ここから画像の角を丸くしていきます。

ClipRRectを追加

画像の角を丸くするには、ClipRRectを使います。
先にコードを載せてから説明しますね。

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(20),
          child: ClipRRect( // これを追加
            borderRadius: BorderRadius.circular(20), // これを追加
            child: Image.asset('images/ochazuke.jpeg'),
          ),
        ),
      ),
    );
  }

ClipRRectとは、画像などの長方形のコンテンツを角丸にしてくれるものです。
ただ、デフォルトでは角丸にする範囲は0、つまりは角丸にはしないことになっているので、
BorderRadius.circular([どれくらい丸くするか])を追加することで角丸になってくれます。
今回は[どれくらい丸くするか]に20を指定しましたが、
ここは実際にエミュレータなどで画像を見て、お好みで設定することができます。

それでは実際に動かしてみましょう。
Simulator Screen Shot - iPhone SE (3rd generation) - 2023-01-05 at 17.18.43.png
無事角を丸くすることができました。

(おまけ)うまくいかなかった例

最初は単純に「Containerで囲んでBorderRadius.circularで角丸にできるんじゃないの?」と思っていました。
Containerで囲めば画像もContainerの形に沿って角丸になってくれるんじゃないかなー、という考えです。
ソースコードで言うとこんな感じですね。

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Container( // PaddingからContainerに変更
          padding: const EdgeInsets.all(20),
          decoration: BoxDecoration( // BoxDecorationを追加
            borderRadius:
                BorderRadius.circular(20), // BorderRadius.circular(20)を追加
          ),
          child: Image.asset('images/ochazuke.jpeg'),
        ),
      ),
    );
  }

が、しかし、角丸にはならない。
Simulator Screen Shot - iPhone SE (3rd generation) - 2023-01-05 at 17.09.54.png
試しにContainerに色をつけて、Containerの範囲をわかるようにしてみたところ、
こんな感じになっていました。
Simulator Screen Shot - iPhone SE (3rd generation) - 2023-01-05 at 17.24.31.png
画像の周りを囲むような感じでContainerができていたんですね。
Containerでダメなら、どしたらいいの? という疑問から、上述のClipRRectにたどり着いた次第です。

以上、失敗例も合わせて、画像を角丸にする方法をご説明しました。
参考になれば幸いです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?