質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

1068閲覧

画像の中の指定の位置に文字を表示する

rell2

総合スコア15

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2020/05/01 08:26

編集2020/05/09 14:13

前提・実現したいこと

Androidのアプリで、画像の中の図形の中などの、指定の位置に文字を描画したいです。

発生している問題・エラーメッセージ

Canvasを使っているのですが、端末によって、テキストの表示される場所が異なり、画像とテキストがずれてしまいます。 機種によって、表示される画像の大きさが違うため、同じ座標でも、テキストと画像がずれるんですか? もしくは、Canvas以外の方法で、画像の中の指定の位置に文字を表示する方法は、ありますか?

該当のソースコード

java

1package com.bakenfuimg; 2 3import android.content.Context; 4import android.graphics.Bitmap; 5import android.graphics.BitmapFactory; 6import android.graphics.Canvas; 7import android.graphics.Color; 8import android.graphics.Paint; 9import android.util.AttributeSet; 10import android.view.View; 11 12public class TestCanvasView extends View { 13 private Paint paint; 14 private Boolean viewflg; 15 private Bitmap bmp = null; 16private String string1, string2,string3,string4,string5,string6; 17 18 19 20 21 public TestCanvasView(Context context, AttributeSet attrs) { 22 super(context, attrs); 23 paint = new Paint(); 24 viewflg = true; 25 bmp = BitmapFactory.decodeResource(getResources(), R.drawable.flat); 26 } 27 28 29public void drawText(String string11, String string22, String string33, String string44, String string55, String string66){ 30 //Log.d("checkk",string); 31 32 string1 = string11; 33 string2 = string22; 34 string3 = string33; 35 string4 = string44; 36 string5 = string55; 37 string6 = string66; 38 39} 40 41 42 @Override 43 protected void onDraw(Canvas canvas) { 44 45 46 // Bitmap 画像を表示 47 canvas.drawBitmap(bmp, 0f, 100f, paint); 48 49 // Textの表示 50 51 paint.setStyle(Paint.Style.FILL_AND_STROKE); 52 paint.setStrokeWidth(5); 53 paint.setColor(Color.argb(240, 7, 3, 4)); 54 55 paint.setTextSize(50); 56 canvas.drawText(string1, 100f, 500f, paint); 57 58 paint.setTextSize(100); 59 canvas.drawText(string2, 100f, 500f, paint); 60 61 } 62}

試したこと

canvasの大きさなどを変えてみましたが、変わりませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2020/05/01 09:16

ある端末でどのように表示され, 別の端末ではどのように表示されるのでしょうか. そしてそれぞれの画面のサイズや解像度は如何なのでしょうか.
hoshi-takanori

2020/05/01 17:02

setTextSize はピクセル数で指定すると思うので、dp や sp をピクセルに変換する必要があると思います。(それでもフォントの違いで微妙にズレるとは思いますが。)
guest

回答1

0

自己解決

画面サイズを取得して、それに合わせて、座標を変えたらできました。単純なことでした。

投稿2020/05/11 13:33

rell2

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問