Python例外…try ..except..else..finally リンクを取得 Facebook × Pinterest メール 他のアプリ 12月 27, 2011 try: pass except IndexError: pass except KeyError,e: # eが例外の内容 print "hogehoge:"+str(e) raise # そのまま例外を上の階層に投げる else: # 例外が起きなかった時の処理 pass finally: # とにかく最後に呼ばれる処理 pass リンクを取得 Facebook × Pinterest メール 他のアプリ コメント
Android・・・テキスト描画あれこれ, ascent(), descent()等 11月 28, 2012 Androidのテキスト描画に必要なTipsをメモ。 存在に忘れがちな横方向のAlignや、意外に正解がわかりにくい縦方向のセンター合わせ等。 ascentとdescent Paint及びFontMetricsで取得可能なascentとdescent。 テキスト描画の原点となるbaselineから上方向の高さがascentで、下方向の高さがdescentとなる。 baselineを割ってdescent領域に入るのは例えば小文字の"j"等だ。 しかし理解しづらいのは、ascentが負の値であることだ。 これは、画面の座標系を思い浮かべてbaselineを(0,0)と考えるとイメージしやすい。 つまり、画面上にはみ出すascentが負、画面内に入るdescentが正、となる。 テキスト用Paintの作成 TextPaint tp = new TextPaint(); tp.setColor( Color.WHITE ); // アンチエイリアスON tp.setAntiAlias( true ); // 塗りつぶしのみ。STROKEを入れると太くなる。STROKEだけだと中抜き tp.setStyle( Style.FILL ); // テキストのフォントサイズ。Paintに直接指定する場合、Density等の考慮が必要。 tp.setTextSize( 11f * density ); 縦方向にセンター合わせ @Override protected void onDraw(Canvas canvas) { // 領域の高さ int areaHeight = getHeight(); FontMetrics fm = tp.getFontMetrics(); // フォントの高さを求める float fh = fm.descent - fm.ascent; // センター合わせにしたあと、Baselineの位置を求めるためにdescentを引く float ty = (areaHeight/2f) + (fh/2f) - fm.descent; canvas.drawText( "text", 0, ty, tp ); } 横方向に原点を右端で設定する... 続きを読む
HTML5 Canvas 3月 28, 2013 直線がぼやける件 HTML5のCanvasでlineWidth=1の直線を描画した時、 ぼやけるのが嫌だったのだが、 座標に0.5を足すことでパキっとした線になることを知った。 ブラウザ上でコードをEditして動作テストする http://www.html5canvastutorials.com/tutorials/html5-canvas-line-width/ HTML5 Canvasのパフォーマンスの改善 http://www.html5rocks.com/ja/tutorials/canvas/performance/ canvasをdivにぶら下げると下側に謎のスキマが空く件 これは、canvasの下端がテキストのベースラインと揃えられているからです。 というわけで、canvas側にvertical-alignを設定しましょう。 vertical-align : bottom; ratina対応の件 Dartでの例。 つまり、canvasの属性のwidthとheightは2倍に指定し、styleのwidthとheightは普通に設定した上で、座標変換に2倍を設定しておけば、何も考えずにOK。 canvas = new CanvasElement( width:w* 2 , height:h* 2 ); canvas . style.. width = " ${w} px" .. height = " ${h} px" ; canvas . context2D .scale( 2 , 2 ); drawImageで画像を描画するとぼやける件 非ratinaでもratina対応をすると案外キレイになるぞ。 でもまあ重いんだが。 多段階のαチャネル(半透明)の画像の描画が重い件 どのブラウザでも重いが、とくにFirefoxで重いらしい。諦めた方がよさそうだ。 続きを読む
Android:TextViewがどうしても2行になってしまう件 2月 22, 2012 TextViewに日本語の文字列をセットしてWRAP_CONTENTで表示するのって普通だが、 文字列が長いわけでもないのに、なぜか、最後の文字が改行して、2行表示になってしまうことが時々ある。 ちなみにAndroid2.3.5だ。 3.xや4.xでは検証してない。もしかしたら発生しないかもしれない。 また、xmlでレイアウトしたものではなく、自前でsetTextSize()にて設定を行った時の話だ。 調べてみると、どうもwidthが1pixelだけ足りない。 もしやと思って、フォントサイズを見てみると奇数になっていた。 それを+1して偶数にしたら、改行せず1行表示になった。 なるほど。 残念だ。フォントサイズには注意しよう。 続きを読む
コメント
コメントを投稿