- PR -

Windows Mobile 向け開発での ラベルの背景透過について

1
投稿者投稿内容
yusuke641
会議室デビュー日: 2008/11/23
投稿数: 3
投稿日時: 2008-11-23 12:33
現在、スマートフォン向けの開発を行っております。

画像(PictureBox) の上に、ラベルを設置して、
ラベルの背景を透過したいのですが、

ラベルの親を画像に設定しても「値が有効な範囲にありません」という
エラーで上手くいきません。
同じコードをWindowsフォームで開発すると、
透過ができます。

Windows Mobile ( compact FrameWork.2.0 )では
やり方が異なるのでしょうか。
ご存知の方がいらっしゃいましたら、ご教授ください。

開発環境
Visual Studio 2008 Pro
C#
Compact FrameWork .Net 2.0
Windows Mobile 6.0 Professional向け開発

コード

private void Form1_Load(object sender, EventArgs e){
 Label label = new Label();
 label.Size = new Size(500, 30);
 label.Location = new Point(5, 5);
 label.Text = "TESTです";
 label.BackColor = Color.Transparent;

 Bitmap image = LoadImage("SmartDeviceProject1.test.bmp");
 Image img = image;
 PictureBox pic = new PictureBox();
 pic.Image = img;
 pic.Size = new Size(500, 100);
 pic.Location = new Point(5, 5);
 pic.BackColor = Color.Transparent;

 panel1.Controls.Add(label);
 panel1.Controls.Add(pic);

 label.Parent = pic;
}

※GUI上でパネルを追加しており、
 ラベルと画像のコントロールはコードで追加しています。

お手数をおかけ致しますが、よろしくお願いいたします。
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2008-11-23 13:56
全然Windows Mobile ( compact FrameWork.2.0 )はやったことは
ありませんので、当てずっぽうですが。

Windowsフォームだとうまくいって、Compactだと×、
かつ 値が有効な範囲にありません が真のエラー原因だとすると、
ありえそうな話としては、
size=(500, 30)とか Size(500, 100);
が(特に500)画面サイズより大きすぎることに起因してエラーだとか?

現在、透過できない以前に、恐らく表示できずに
引っかかっているようなので、エラーメッセージをまともに解釈すると、
この部分のような気がします。

GUIから追加されたPanelのSizeは幾つでしょう?
yusuke641
会議室デビュー日: 2008/11/23
投稿数: 3
投稿日時: 2008-11-23 17:52
platiniさん

早速のご回答ありがとうございます。

大変重要な事を記入しておりませんでした。

エラーがあるのは以下の部分です。

label.Parent = pic;

この1文をコメントアウトして、
縦位置をずらした場合は表示がそれぞれされました。

親をpictureboxにしようとすると
エラーが発生してしまいます。

現在、開発環境のそばから離れてしまっておりますが、
確か、panelのサイズは
Width:548 height:600 ぐらいはあったような気がします。
でも、platiniさんの指摘内容の可能性を考え確認してみます。

親を変えようとして、出ているエラーですので、
サイズオーバーの可能性は十分あると思いますので。。。

Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2008-11-24 13:29
こんにちは。

そもそも.NET Compact Frameworkで、背景色透過がサポートされているのか、
を疑ってみるべきではないですか?

アプリケーションインターフェイス(.NET ClassLibrary、Windows API)的には
通常のWindowsでも、WindowsCEでも、ほぼ同じようなものが提供されていますが、
OSにしろ、ClassLibraryにしろ、中身は全くの別物なのですから、
いくらでも違いはありますよ。

画像上に文字を表示したいだけなら、カスタムコントロールで簡単につくれるでしょう。
コントロールの描画時に、画像と文字を描画すればよいのですから。
(細かい要件にもよりますが、私なら半日もあれば…)
コントロールの透過なんてWindowsの仕組みを考えるとかなり難しいでしょうに。

あと…
サイズがはみ出したからエラーになるなんて、私には聞いたことも経験したこともありません。

未記入
会議室デビュー日: 2008/11/24
投稿数: 13
投稿日時: 2008-11-24 15:24
(利用規約違反のため削除いたしました。@ITクラブメンバーシップセンター)
未記入
会議室デビュー日: 2008/11/24
投稿数: 13
投稿日時: 2008-11-24 15:31
(利用規約違反のため削除いたしました。@ITクラブメンバーシップセンター)
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-11-25 05:23
モデレータの遠藤@DAさん。

「未記入」さんの投稿スパムじゃないの。

yusuke641
会議室デビュー日: 2008/11/23
投稿数: 3
投稿日時: 2008-11-25 23:46
みなさん回答ありがとうございます。

色々試してみましたが、
そもそも、PictureBoxにコントロールをAddすることが
できませんでした。(Windowsでは可能)

結局、DrawStringにて処理を行うことで
解決することができました。

本当にありがとうございました。
今後とも、よろしくお願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)