C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 >>
■56194  pictureBox上にlabelを表示するには
□投稿者/ クロ -(2011/01/04(Tue) 16:58:26)

    分類:[ASP.NET (C#)] 

    いつもお世話になっております。
    pictureBox上に設定画面で設定した色でグラデーションをかけ、その上に
    labelを表示したいのですが
    labelを表示するとその背景がpictureboxのグラデーションの
    縮小された形になっています。
    labelの背景を透過させたいのですが
    どうしたらいいのか教えて下さい。

    labelの代わりに
    g.DrawStringで文字を書けば、解決はしますが
    時計を表示させたいのでtimerを使って毎秒時間を変える処理をしているのですが
    毎秒Refresh()をすると毎秒ちらつくのでpictureBox上にlabelを表示したいのです。



    private void Form2_Shown(object sender, EventArgs e)
    {
    label1.BackColor = Color.Transparent;
    label.Parent = pictureBox;
    }


    private void pictureBox_Paint(object sender, PaintEventArgs e)
    {
    // グラデーション処理
    Graphics g = pictureBox1.CreateGraphics();
    LinearGradientBrush gb = new LinearGradientBrush(g.VisibleClipBounds, Color.DarkBlue, Color.Wheat, LinearGradientMode.Vertical);

    g.FillRectangle(gb, g.VisibleClipBounds);

    // Refresh();
    gb.Dispose();
    }

    void timer1_Tick(object sender, EventArgs e)
    {
    label1.Text = DateTime.Now.ToString();
    }
親記事 /過去ログ94より / 関連記事表示
削除チェック/

■56196  Re[1]: pictureBox上にlabelを表示するには
□投稿者/ やじゅ -(2011/01/04(Tue) 18:36:09)
>
記事No.56194 のレス /過去ログ94より / 関連記事表示
削除チェック/

■56201  Re[2]: pictureBox上にlabelを表示するには
□投稿者/ クロ -(2011/01/04(Tue) 20:52:55)
    No56196 (やじゅ さん) に返信
    > ■No56194 (クロ さん) に返信
    >
    > 分類:[ASP.NET (C#)] ?
    > 本当にASP.NETですか?
    >
    >> private void pictureBox_Paint(object sender, PaintEventArgs e)
    > pictureBox_Paintの描画をやめて、PaintBox.Imageプロパティ設定されたイメージに直接描画してみては
    > どうでしょうか
    > http://dobon.net/vb/dotnet/graphics/pictureboximageanddrawimage.html

    すいません。分類を間違えていました。
    C#です。

    string型のイメージも考えたのですが毎秒更新しているので
    ちらつき防止処理を行っても完全にちらつきが取り除けない状態である点と
    毎秒Refresh()を行うとメモリを食うみたいです。

    labelならRefresh()をする必要が無いみたいなので
    出来れば、labelで表示したいのですが方法はないでしょうか?

    最悪の場合は、秒単位を分単位に買えて、やじゅ様のおっしゃった方法を
    考えてはいますが他に方法がありましたらご回答お願いいたします。
記事No.56194 のレス /過去ログ94より / 関連記事表示
削除チェック/

■56207  Re[3]: pictureBox上にlabelを表示するには
□投稿者/ やじゅ -(2011/01/04(Tue) 23:12:39)
>
    No56201 (クロ さん) に返信
    > labelならRefresh()をする必要が無いみたいなので
    > 出来れば、labelで表示したいのですが方法はないでしょうか?

    私の提案の言葉の表現が悪かったみたいです、labelコントロールはそのままで
    PictureBox側をImageプロパティを使用した方法にしてみてはどうですか ってことです。
記事No.56194 のレス /過去ログ94より / 関連記事表示
削除チェック/

■56210  Re[4]: pictureBox上にlabelを表示するには
□投稿者/ クロ -(2011/01/04(Tue) 23:48:28)
    No56207 (やじゅ さん) に返信
    > ■No56201 (クロ さん) に返信
    >>labelならRefresh()をする必要が無いみたいなので
    >>出来れば、labelで表示したいのですが方法はないでしょうか?
    >
    > 私の提案の言葉の表現が悪かったみたいです、labelコントロールはそのままで
    > PictureBox側をImageプロパティを使用した方法にしてみてはどうですか ってことです。
    >

    やじゅ様、何度も回答ありがとうございます。
    意味をまた取り違えたら申し訳ないので念のため、確認しますが
    グラデーションの画像をpictureBoxに設定して、上からlabelを表示するって方法で合っているでしょうか?。
    その方法も考えましたが、設定画面で設定した色でグラデーションをかける処理ができなくなって
    しまうのでちょっと厳しいです。


記事No.56194 のレス /過去ログ94より / 関連記事表示
削除チェック/

■56213  Re[5]: pictureBox上にlabelを表示するには
□投稿者/ やじゅ -(2011/01/05(Wed) 00:25:06)
>
    No56210 (クロ さん) に返信
    > グラデーションの画像をpictureBoxに設定して、上からlabelを表示するって方法で合っているでしょうか?。
    > その方法も考えましたが、設定画面で設定した色でグラデーションをかける処理ができなくなって
    > しまうのでちょっと厳しいです。

    リアルタイムで色を変えるというなら使えないでしょうが…

    そうでないなら、提示したリンク先のように設定画面で設定した色のグラデーションをメモリ上のBitmapに作成してセットから
    imageプロパティにセットすればいいかなと思いました。

記事No.56194 のレス /過去ログ94より / 関連記事表示
削除チェック/

■56212  Re[5]: pictureBox上にlabelを表示するには
□投稿者/ クロ -(2011/01/05(Wed) 00:22:36)
    やじゅ様、回答ありがとうございます。
    また勘違いをしてしまいました。

    Bitmap bmp = new Bitmap(100,100);
    g = Graphics.FromImage(bmp);

    LinearGradientBrush gb = new LinearGradientBrush(g.VisibleClipBounds, Color.DarkBlue, Color.Wheat, LinearGradientMode.Vertical);
    g.FillRectangle(gb, g.VisibleClipBounds);
    pictureBox.Image = bmp;

    で、グラデーションのImageを作成して、pictureBoxのImageプロパティに設定する事が出来ました。
    これで処理も軽く、ちらつきも無くす事ができ、助かりました。

    本当にありがとうございました。
記事No.56194 のレス / END /過去ログ94より / 関連記事表示
削除チェック/

■56214  Re[6]: pictureBox上にlabelを表示するには
□投稿者/ やじゅ -(2011/01/05(Wed) 00:27:40)
>
    2011/01/05(Wed) 00:27:58 編集(投稿者)

    No56212 (クロ さん) に返信
    > で、グラデーションのImageを作成して、pictureBoxのImageプロパティに設定する事が出来ました。
    > これで処理も軽く、ちらつきも無くす事ができ、助かりました。

    よかったですね、回答を書いている間に解決済みになってしまいましたので、解決済みにしておきます。
記事No.56194 のレス / END /過去ログ94より / 関連記事表示
削除チェック/

■56211  ファイル内の文字列置換について
□投稿者/ ひっそり -(2011/01/05(Wed) 00:06:06)

    分類:[C#] 

    C#で、ファイル内の特定文字列を指定文字列で変換したいと思っています。

    例えば「aaa.txt」に「abc」と書かれていた場合、「ab」を「!」に変換して「!c」
    としたいのですが、どうのようなクラスを使用すればできるのでしょうか?

    ご教示お願いします。
親記事 /過去ログ94より / 関連記事表示
削除チェック/

■56215  Re[1]: ファイル内の文字列置換について
□投稿者/ クロ -(2011/01/05(Wed) 00:28:32)
    No56211 (ひっそり さん) に返信
    > C#で、ファイル内の特定文字列を指定文字列で変換したいと思っています。
    >
    > 例えば「aaa.txt」に「abc」と書かれていた場合、「ab」を「!」に変換して「!c」
    > としたいのですが、どうのようなクラスを使用すればできるのでしょうか?
    >
    > ご教示お願いします。

    ファイルから読み込んだ1行をlineとすると

    string line = "abc";

    line = line.Replace("ab","!");//abを!に変換

    で変換されます。
記事No.56211 のレス /過去ログ94より / 関連記事表示
削除チェック/

■56217  Re[2]: ファイル内の文字列置換について
□投稿者/ やじゅ -(2011/01/05(Wed) 00:45:48)
>
    > ■No56211 (ひっそり さん) に返信
    >C#で、ファイル内の特定文字列を指定文字列で変換したいと思っています。

    文字列置換は、クロさんが提示されてますので、
    ファイルの読み書きは下記サイトを見ればいいです。
    http://dobon.net/vb/dotnet/file/index.html
記事No.56211 のレス /過去ログ94より / 関連記事表示
削除チェック/

■56218  Re[3]: ファイル内の文字列置換について
□投稿者/ ひっそり -(2011/01/05(Wed) 00:48:47)
    クロさん、やじゅさん
    返信ありがとうございます。
    
    解決しました。
    
    ---
    aryFilePath:ファイルのパスが入ったList
    textBox2.Text:変換前の文字列
    textBox2.Text:変換後の文字列
    
                foreach (string path in aryFilePath)
                {
                    //ファイルの内容を読み込む
                    StreamReader sr = new StreamReader(path, Encoding.GetEncoding("Shift_JIS"));
    
                    //内容をすべて読み込む
                    string s = sr.ReadToEnd();
    
                    //閉じる
                    sr.Close();
    
                    // 文字列置換
                    s = s.Replace(textBox2.Text, textBox3.Text);
    
                    //Shift JISで書き込む
                    //書き込むファイルが既に存在している場合は、上書きする
                    System.IO.StreamWriter sw = new System.IO.StreamWriter(
                        path,
                        false,
                        System.Text.Encoding.GetEncoding("shift_jis"));
                    //内容を書き込む
                    sw.Write(s);
                    //閉じる
                    sw.Close();
    
                }
記事No.56211 のレス / END /過去ログ94より / 関連記事表示
削除チェック/

■56197  fixedでstringからchar*を取得すると1文字に?
□投稿者/ BBKids -(2011/01/04(Tue) 19:56:50)

    分類:[C#] 

    初めて質問させていただきます。

    C言語で書かれた自作のDLLをC#から呼び出すため、
    以下のようなプログラムを書きました。

    unsafe class Dll
    {
    [DllImport("hoge.dll")]
    public static extern int createFile(char* path, char* data);
    }

    public object foo(string bar, params string[] baz)
    {
    object ret = "";

    unsafe
    {
    fixed (char* path = args[0], texts=args[1])
    {
    Dll.createFile(path,texts);
    }
    }
    ret = "Success";
    return ret;
    }

    DLLの第1引数はファイルパス、第2引数はファイルに書き込む内容です。
    これを実行すると、DLLの呼び出し自体は成功しているのですが、
    処理結果を見ると、引数の先頭文字しかDLLに渡っておりません。
    具体的には、
    args[0]に"hogehoge.csv",args[1]に"a,b,c,d"を設定すると、
    aという内容のhというファイルが作られる、という現象です。
    おそらく基本的なことを理解していないために、おかしなプログラムを
    書いているのだと思いますが、この後何を調べてよいのかわからず、
    行き詰ってしまいました。
    原因や解決策への道しるべなど、ご教示いただけば幸いでごさいます。
    何卒よろしくお願いいたします。

    [環境]
    Windows XP,Visual Studio 2008(C++/C#),.NET Framework 3.5

親記事 /過去ログ94より / 関連記事表示
削除チェック/

■56198  Re[1]: fixedでstringからchar*を取得すると1文字に?
□投稿者/ Azulean -(2011/01/04(Tue) 20:00:26)
    2011/01/04(Tue) 20:00:35 編集(投稿者)

    単純に以下のように書いたらだめなんでしょうか。

    unsafe class Dll
    {
    [DllImport("hoge.dll")]
    public static extern int createFile(string path, string data);
    }

    public object foo(string bar, params string[] baz)
    {
    Dll.createFile(args[0], args[1]);
    return "Success";
    }
記事No.56197 のレス /過去ログ94より / 関連記事表示
削除チェック/

■56199  Re[2]: fixedでstringからchar*を取得すると1文字に?
□投稿者/ BBKids -(2011/01/04(Tue) 20:27:20)
    Azulean様

    返信ありがとうございます。
    ご指摘のように、string型をそのまま渡すことで、意図した通りに動きました。

    DLL側のコード(関数の宣言)は、
    extern "C" __declspec(dllexport) int createEmptyFile(char* path, char* data)
    のようになっておりまして、以下のURLなどを参考にしながら、string型からchar*への
    何らかの変換が必要だと考えておりましたが、必要はなかったのですね。
    http://msdn.microsoft.com/ja-jp/library/aa288474(VS.71).aspx

    fixedの動作などキチンと理解が出来ておらず、私はまだ修行が足りてないようですが、
    おかげさまで直面していた問題は解決しましたので、解決済みとさせていただきます。

    ありがとうございました。

    No56198 (Azulean さん) に返信
    > 2011/01/04(Tue) 20:00:35 編集(投稿者)
    >
    > 単純に以下のように書いたらだめなんでしょうか。
    >
    > unsafe class Dll
    > {
    > [DllImport("hoge.dll")]
    > public static extern int createFile(string path, string data);
    > }
    >
    > public object foo(string bar, params string[] baz)
    > {
    > Dll.createFile(args[0], args[1]);
    > return "Success";
    > }
    >
記事No.56197 のレス / END /過去ログ94より / 関連記事表示
削除チェック/

■56221  Re[3]: fixedでstringからchar*を取得すると1文字に?
□投稿者/ よねKEN -(2011/01/05(Wed) 10:36:37)
    No56199 (BBKids さん) に返信
    > fixedの動作などキチンと理解が出来ておらず、私はまだ修行が足りてないようですが、
    > おかげさまで直面していた問題は解決しましたので、解決済みとさせていただきます。

    私はC#でunsafeとかそっちの関連についてはやったこともありませんので、
    こうすればできますよ、と即座にはアドバイスできないのですが、
    今回の間違いは、C言語のchar* と.NET FrameworkのSystem.Stringの
    文字コードと文字列の取り扱いの違いを認識していない点だと思います。

    char*で扱う文字列はASCII(SJIS)の文字列です。
    .NET FrameworkのStringは内部データはUNICODEです。

    "hogehoge.csv"という文字列はUNICODEでは16進数で「68 00 6F 00 …」(68 00の部分がh)というデータの並びになります。
    これをそのままchar*に渡せば、68 = h、00 = ヌル文字と解釈され、6F以降のデータはないのと同じ扱いになり、

    > aという内容のhというファイルが作られる、という現象です。

    という現象になります。
記事No.56197 のレス / END /過去ログ94より / 関連記事表示
削除チェック/

■56223  Re[3]: 【お知らせ】 荒らしは放置でお願いします
□投稿者/ 中博俊@管理人 -(2011/01/05(Wed) 15:01:35)
    いまさらですが、プロバイダーからの警告処理が行われるとのことですので、荒らしコメントは削除しました。
記事No.56041 のレス /過去ログ94より / 関連記事表示
削除チェック/

■56202  WebBrowserのDocumentCompleted
□投稿者/ ツナツナ -(2011/01/04(Tue) 21:21:08)

    分類:[VB.NET/VB2005 以降] 

    VB2008のWebBrowserであるサイトをモニターし、DocumentCompletedで内容を分析しているのですが、
    最近、(サイトの更新があったのか?)DocumentCompletedイベントが発生しない場合があります。
    全くDocumentCompletedイベントが発生しないわけではなく、イベントが発生したりしなかったりという状況が続いています。
    そこで質問なのですが、
    ・考えられる原因は何でしょうか?
    ・これを回避する方法はあるでしょうか?
    ご回答よろしくお願いします。
親記事 /過去ログ94より / 関連記事表示
削除チェック/

■56205  Re[1]: WebBrowserのDocumentCompleted
□投稿者/ 魔界の仮面弁士 -(2011/01/04(Tue) 21:52:53)
    No56202 (ツナツナ さん) に返信
    > イベントが発生したりしなかったりという状況が続いています。

    ・F5 などによるリロードでは DocumentCompleted が発生しない可能性があります。
    ・メインスレッドで無限ループ等の重い処理を行っていた場合、取りこぼす可能性が生まれます。
記事No.56202 のレス /過去ログ94より / 関連記事表示
削除チェック/

■56227  Re[2]: WebBrowserのDocumentCompleted
□投稿者/ ツナツナ -(2011/01/05(Wed) 20:25:10)
    No56205 (魔界の仮面弁士 さん) に返信
    > ■No56202 (ツナツナ さん) に返信
    >>イベントが発生したりしなかったりという状況が続いています。
    >
    > ・F5 などによるリロードでは DocumentCompleted が発生しない可能性があります。
    > ・メインスレッドで無限ループ等の重い処理を行っていた場合、取りこぼす可能性が生まれます。

    レスが遅れてすみません。
    F5やRefreshなどのリロードは行っておりません。
    また、重い処理は行っておりません。
    あと、WebBrowserで該当URLをNavigateした後、DocumentCompletedが発生しない場合、
    WebBrowserのReadyStateプロパティを調べてみると、ずっとWebBrowserReadyState.Interactiveの
    状態になっているようです。
記事No.56202 のレス /過去ログ94より / 関連記事表示
削除チェック/

<前の20件 | 次の20件>

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 >>

ヒット件数が多いので過去ログ1〜94 までの検索結果 / 過去ログ95からさらに検索→

パスワード/

- Child Tree -