掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
単色のビットマップファイルを16色に変更するためには (ID:69451)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ビットマップファイルに数字を書き込む部分があるのですが 書き込む文字幅(X方向)が狭く、4bitに対応できていない状態です。 /*---- グラフィックフォント書き込み (8x8) ----*/ x=75, y=70 int=0 *str=42.5 void bitfonf(int x, int y, int dir, char *str) unsigned char *aplane; register i; register shift; unsigned char or[8]; unsigned char pattern[8]; for(i=0; i<8; i++) or[i]=0x00; switch(dir) { case 0: y-=7; shift=x%8; aplane=FigureBuff+y*HorizonBytes+(4*x>>3); hile(*str) { bit_font_operation(dir, *str++, pattern); for(i=0; i<8; i++) { *(unsignedchar*)(aplane+HorizonBytes*i)|=or[i]|(pattern[i]>>shift); or[i]=pattern[i]<<(8-shift); } aplane++; } for(i=0; i<8; i++) *(unsigned char *)(aplane+HorizonBytes*i)|=(or[i]); break; 後略 /*----- 8×8ビットパターン回転処理 -----*/ void bit_font_operation(int mode, int code, unsigned char *pattern) { register i; register j; switch(mode) { case 0: for(i=0; i<8; i++) pattern[i]=BitMapFont8x8[code][i]; break; 後略 unsigned char BitMapFont8x8[][8]={ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-- --*/ 中略 {0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-- . --*/ {0x00, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00}, /*-- / --*/ {0x00, 0x7C, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x7C}, /*-- 0 --*/ {0x00, 0x7E, 0x18, 0x18, 0x18, 0x78, 0x38, 0x18}, /*-- 1 --*/ {0x00, 0xFE, 0xC0, 0x70, 0x1C, 0x06, 0xC6, 0x7C}, /*-- 2 --*/ {0x00, 0x7C, 0xC6, 0x06, 0x1C, 0x06, 0xC6, 0x7C}, /*-- 3 --*/ {0x00, 0x0C, 0xFE, 0xCC, 0x6C, 0x3C, 0x1C, 0x0C}, /*-- 4 --*/ {0x00, 0x78, 0xCC, 0x06, 0x0C, 0xF8, 0xC0, 0xFE}, /*-- 5 --*/ {0x00, 0x7C, 0xC6, 0xC6, 0xFC, 0x60, 0x30, 0x1C}, /*-- 6 --*/ {0x00, 0x30, 0x30, 0x30, 0x18, 0x0C, 0xC6, 0xFE}, /*-- 7 --*/ {0x00, 0x7C, 0xC6, 0xC6, 0x7C, 0xC6, 0xC6, 0x7C}, /*-- 8 --*/ {0x00, 0x78, 0x0C, 0x06, 0x7E, 0xC6, 0xC6, 0x7C}, /*-- 9 --*/ 中略 {0x00, 0x15, 0x0A, 0x15, 0x0A, 0x15, 0x0A, 0x15} /*-- --*/ }; 【4の場合】 □□□□□□□□ □□□□■■□□ ■■■■■■■□ ■■□□■■□□ □■■□■■□□ □□■■■■□□ □□□■■■□□ □□□□■■□□ ①②③④⑤⑥⑦⑧ これまでの、縦・横に線を引く場合は *(unsignedchar*)(aplane+HorizonBytes*i)|=or[i]|(pattern[i]>>shift); |= 以後を4倍すると良かったのですが 現在は、X方向の書きこみ領域が①〜③位で、4の文字が圧縮されて狭くなっています) X方向の書きこみ領域(①〜⑧まで)を増やすにはどうしたら良いのでしょうか? (X方向は問題なく出来ます) 長くなりましてすみません。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.