PSP xvi

PSPプログラミングを教えるブログ(本気で頑張る人アクセス大歓迎サイト)

PSP-X.gif

記事の間違いを報告  新アップローダー
記事修正情報 PSPプログラミング資料 自作ゲーム PSP用エミュレータ リンク

公認リンク
公式PSP専科 公式PSVita専科 はじめるPSPSDK PSP EXEC GAME M@STER PSP 猫山のYouTubeチャンネル

TAG
全記事にタグをつけています  http://nekoyama2gillien.blog36.fc2.com/?tag=タグ
PSP PSPプログラミング DXライブラリPortable OSLib ショートプログラム ハローワールド
PSP自作ゲーム PSP自作ソフト エミュレータ ゲームアーカイブス PSP動画
動画 初音ミク ミクミクダンス MMDドラマ ゲーム 魔法少女まどか☆マギカ 侵略!イカ娘
アイドルマスター

このブログについて

このブログでは、非公式のPSPソフト、いわゆる自作ソフト( PSP Homebrew )を作る事を目的とします。

著作権などの こまかい利用規約については、こちらを開いてお読み下さい

このブログについて知りたい方、初めて来訪された方はこちらを開いてお読みください
お問い合わせは 猫山猫宗(nekomune@gmail.com)までどうぞ


当ブログはリンクフリーです。ブログ名は、アルファベットで「PSP xvi」と書いて『ピーエスピー・エクシビ』とお読みください。
相互リンクを希望されるブログ運営者様は、ココで申請して下さい。


このブログで全記事から探し物の方は、ここをクリックして下さい。
http://nekoyama2gillien.blog36.fc2.com/?all

スポンサーサイト 

--/--/--
--. --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[edit]

CM: --
TB: --

page top

2011年2月21日更新
このページのプログラムコードはカスタムファームウェアPSPでのみ正常実行できます

● 文字列を描画した時の横幅を取得する(本家互換)
int GetDrawStringWidth( const char *文字列, int 文字数 );

この関数は、描画予定の文字列の「行はみだしチェック」が出来たり、センタリングで文字列を描画したい時の計算などに使います。右寄せも可能

[サンプルコード]
このソースコードから生成される実行ファイルには、以下の著作物の著作権が適用されます
DXライブラリPortable  DX Library Portable Copyright (C) 2008-2010 Kawai Yuichi.
intraFont   Uses intraFont by BenHur
ソースコード自体はBSDライセンスでいいかも知れません

#include <dxlibp.h>
#include <string.h>
#include <pspgu.h>

// 32ビットカラーの16進数コードを RGBから作成する計算式(マクロ)
#define RGB(r,g,b) ((((long)b<<16)|((long)g<<8)|((long)r))|0xFF000000)

#define MOJIRETSU "フォントサイズ12 日本語フォント シフトJIS"
#define FONTSIZE 12

PSP_MODULE_INFO("intraFont TEST", 0, 0, 0);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

int main()
{
int yokohaba, x_ichi; // 横幅ピクセル数, X位置

if(DxLib_Init() == -1) { // もしライブラリの初期化に失敗したら
goto OWARI; // ラベル:OWARI へ飛びます
}
//=================================================================================
SetDisplayFormat(DXP_FMT_8888); // 32ビット色モード
ClearDrawScreen();
DrawBox(0,0,480,272,RGB(0,58,10),TRUE); // 画面を濃緑色で塗りつぶし

SetFontSize(FONTSIZE); // フォントサイズ設定
ChangeFontType(DX_FONTTYPE_NORMAL); // エッジ無しフォント
DrawFormatString(0,0,RGB(0,255,255),MOJIRETSU); // printf();相当
yokohaba=GetDrawStringWidth(MOJIRETSU,strlen(MOJIRETSU)); // ← これです!
DrawFormatString(0,FONTSIZE*1,DXP_COLOR_WHITE,"全部で半角%d文字分で、長さは%dピクセル"
,strlen(MOJIRETSU),yokohaba);
DrawFormatString(0,FONTSIZE*2,DXP_COLOR_WHITE,"上の文字列を行の中央に描画させます。");

x_ichi=(int)((480-yokohaba)/2)-1; // 計算w
DrawFormatString(x_ichi,FONTSIZE*3,RGB(0,38,255),MOJIRETSU); // printf();相当

ScreenFlip(); // 画面表示

do { // 何かボタンが押されるまで待つ処理
ProcessMessage();
}while(CheckHitKeyAll() == 0);
//=================================================================================
OWARI:;

DxLib_End(); // 終了します
return 0;
}

Makefile は、過去記事参照して下さい

[ 実行結果 ]
20100611221048.png
↑ほら、この通り。青色でセンタリングされて書かれたよ


[ちゅうい]
文字コードは、シフトJISのみ対応です。UTF-8系の文字コードは文字化けします
20100611235746.jpg
ソースコードの文字コードを UTF-8 にして、SetCodepoint(DXP_CP_UTF8);書いてみたんですが効きませんでした


ハンドルを扱う関数の解説は省略します。各自お勉強して下さい♪
InitFontToHandle
CreateFontToHandle
DrawStringToHandle
DrawFormatStringToHandle
GetDrawStringWidthToHandle
GetDrawFormatStringWidthToHandle
DeleteFontToHandle


関連記事
スポンサーサイト

[edit]

CM: 2
TB: 0

page top

この記事に対するコメント

GetColorU8の場所でコンパイルエラーが吐かれてしまいます。

何が原因なのでしょうか?

Rainey #lc4322jM | URL | 2011/02/20 14:47 * edit *

エラーを確認

報告ありがとう!

はい、エラ-です。

この GetColorU8( ); という関数は、
{
  unsigned char r; // 赤成分
  unsigned char g; // 緑成分
  unsigned char b; // 青成分
  unsigned char a; // 不透明度
}
を元に、unsigned int の色コードを返すDXLibP の 関数です

で、RGBA から色コードを作れば良いので
http://nekoyama2gillien.blog36.fc2.com/blog-entry-406.html
にある、RGB( R,G,B ) に置き換えてください(マクロ命令)

【 方法 】
GetColorU8( R,G,B,A );
 ↓  ↓  ↓
RGB( R,G,B );
これでおk!

あとでプログラム修正します~♪

猫山猫宗 #jjrqi.Ao | URL | 2011/02/21 21:40 * edit *

page top

コメントの投稿

Secret

page top

トラックバック

トラックバックURL
→http://nekoyama2gillien.blog36.fc2.com/tb.php/283-1f45e5dc
この記事にトラックバックする(FC2ブログユーザー)

page top


h o m e |


 

2017-03