文字について – プログラミング – Home

通知
すべてクリア

文字について


テレ~
 テレ~
(@テレ~)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

文字を四角に囲みたいのですが
こういうのってできるのでしょうか?


引用解決済
トピックタグ
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

>文字を四角に囲みたいのですが

四角に囲むって

ああああ
あ  あ
あ  あ
ああああ

こういうことですか?


返信引用
テレ~
 テレ~
(@テレ~)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

いや線で四角を作ってそのなかに文字を入れるってことです


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

MFC をお使いかどうかなど細かいことを書いてらっしゃらないので、MFCでお話します
文字を囲む最小の矩形とはいかないのですが、CDC::GetTextExtent() で CSize 型の
戻り値から巾、高さを知るのが簡単でしょう


返信引用
テレ~
 テレ~
(@テレ~)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

すいません よくわからないのですが
なんか例などありませんか?


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

>よくわからないのですが

何がどう、どこが、わからないのでしょうか?
私には判らないということしか判らないとお返事のしようがありません


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 24年前
投稿: 359
 

>よくわからないのですが

まず、
>発言される前に「使用上の注意」を必ずお読み下さい。


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

>なんか例などありませんか?

こんなのでいいですか?
(動作試験はおろかコンパイルできるかも調べてませんけど)

// 矩形を描く(線の色や、太さや、形状やについては知らない)
//
void CxxView::DrawBox(CDC *pDC, const CRect& r)
{
if (pDC) {
CPoint corner[5];

corner[0] =CPoint(r.left, r.top);
corner[1] =CPoint(r.left, r.bottom);
corner[2] =CPoint(r.right, r.bottom);
corner[3] =CPoint(r.right, r.top);
corner[4] =CPoint(r.left, r.top);
::Polyline(pDC ->m_hWnd, corner, 5);
}
}

// 文字列(色やどんなフォントかは知らないのでイタリックだと末尾に線が
// かかるかもしれない)を線で囲む
//
void CxxView::DrawBoxText(CDC *pDC, const CPoint& pos, const CString& mes)
{
if (pDC) {
CSize sz =pDC ->GetTextExtent(pos, mes);

pDC ->TextOut(pos, mes);
DrawBox(pDC, CRect(pos, sz));
}
}


返信引用
ん
 ん
(@ん)
ゲスト
結合: 24年前
投稿: 81
 

ご所望の例です。

AfxMessageBox(
┌─┐\n
│あ│\n
└─┘ );


返信引用
mf
 mf
(@mf)
ゲスト
結合: 23年前
投稿: 9
 

GetTextExtentを使った方法2番目。

void CMyView::OnDraw(CDC* pDC)
{
CTextDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
CString str= あいうえお;
CSize size = pDC->GetTextExtent(str);
CRect rect(10, 20, 10 + size.cx, 20 + size.cy);
CRect rect2 = rect;
rect2.bottom++;
rect2.top--;
rect2.left--;
rect2.right++;
pDC->Rectangle(&rect2);
pDC->DrawText(str, &rect, DT_LEFT | DT_CENTER);
}

rect2.bottom++;
rect2.top--;
rect2.left--;
rect2.right++;
が無いとDrawTextで上書きされて消えてしまいます。


返信引用
テレ~
 テレ~
(@テレ~)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

みなさまいろいろとありがとうございます。

ExtTextOutで表示するにはどのような例があるのでしょうか?


返信引用
tib
 tib
(@tib)
ゲスト
結合: 24年前
投稿: 468
 

何かプログラミングしていて、つまづいたので質問しているのでしょうか。それともただ
なんとなく知識として訊いてみたいだけなのでしょうか。

前者ならもっと詳しくあなたの状況を説明してください。これだけの方々が回答してくだ
さっているのに、たった7行しかないあなたの書き込みからは、あなたが「Device
Contextというものを理解しているのかどうか」すら読みとることができません。

後者ならばそのようにちゃんと書いておくべきです。それによって回答者は一般的な話に
留めたり、もっと基本的な事から説明を始めたり、あるいは無視したりできるわけです。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 24年前
投稿: 895
 

>ExtTextOutで表示するにはどのような例があるのでしょうか?

MSDNをみると 
>「CONTROLS: MFC ベースの ActiveX コントロール」
>CIRC3 サンプルは、以下のキーワードをカバーしています。

>AfxGetInstanceHandle; CDC::Ellipse; CDC::SelectObject;
>CDC::SelectStockObject; CDialog::DoModal; CString::AllocSysString;
>CString::GetLength; Ellipse;

>ExtTextOut;

>FillRect; GetClientRect; GetDC; GetVersion; MAKELONG; RGB; ReleaseDC;
>SelectObject; SetBkMode; SetTextAlign; SetTextColor

とありましたのでこれをサンプルにしてみてはどうでしょうか


返信引用
EIJI
 EIJI
(@EIJI)
ゲスト
結合: 25年前
投稿: 76
 

とりあえず自力で書いたコードを抜粋して見せてくださいな。
その内容でどの程度のスキルを持っているのか推測できますし。
そのうえで、エラーが出るならエラーの位置とメッセージも併記して。

具体的な例を知りたいようですが、質問の内容が抽象的なので
いろんな応えになっちゃいます。他の書き込みも読んで、
「使用上の注意」も読んで、質問の仕方を工夫しましょう。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました