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

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

C# と VB.NET の入門サイト

Re[9]: ビットマップ画像の表示について


(過去ログ 46 を表示中)

[トピック内 19 記事 (1 - 19 表示)]  << 0 >>

■24948 / inTopicNo.1)  ビットマップ画像の表示について
  
□投稿者/ 裕猫 (24回)-(2008/09/12(Fri) 13:22:01)

分類:[.NET 全般] 


いつもお世話になっています。
VISUAL STUIO 2005 C# で開発しています
ビットマップの読み込み描画動作をIllustというクラスを作ってまとめ、FORM1,FORM2からファイル名を渡して描画しようとしたんですが、Illustクラスに描画ルーチンを書くと必要なワードが使えなかったりで、組むことができません。使用するFORMのなかに書けば出来るのですが、それではC# の意味がないですよね。でお聞きしたいのですが、私の考えている方法ってのは、基本的にできないのでしょうか?Yes、Noだけでいいので教えてください。いろいろ探しているのですが、ある例は必ずFORM1の中で設定して使用しているものだけなので、私のような考え方はできないのか?と疑問に感じているのでよろしくお願いいたします。
引用返信 編集キー/
■24949 / inTopicNo.2)  Re[1]: ビットマップ画像の表示について
□投稿者/ επιστημη (1316回)-(2008/09/12(Fri) 13:39:25)
επιστημη さんの Web サイト
> 必要なワードが使えなかったりで、組むことができません。

そこくわしく。描画関数に(引数で)与えればいいんじゃなくて?

引用返信 編集キー/
■24950 / inTopicNo.3)  Re[2]: ビットマップ画像の表示について
□投稿者/ 裕猫 (25回)-(2008/09/12(Fri) 14:03:57)
No24949 (επιστημη さん) に返信
いつもありがとうございます。 おっしゃる通り引数で渡せばいいんですが、引数を3つ渡しますが、引数の数が合わないというエラーメッセージが出ます。指定の仕方が悪いんですが、どう悪いのかわかりません。いろいろ指定を変えてやっていますが、まだ解決できません。数合っているんですがねぇ。またペイント関数の中でform1の中では使えるのに、Illustクラスの中だと使えないワードが出たりでペイント関数が作れない状態です。ダブルバッファリングなんかが引っかかります。知識不足だとは承知してるので、本とインターネットで探すのですが、今のところ見つかりません。で、もしかしたらできないのかな?と思ったわけです。
引用返信 編集キー/
■24951 / inTopicNo.4)  Re[3]: ビットマップ画像の表示について
□投稿者/ 裕猫 (26回)-(2008/09/12(Fri) 14:11:41)
追加です
public void paint(object sender, PaintEventArg e)とすると変数渡せないので、
public void paint(string CG1, string CG2, int ItiX, object sender, PaintEventArg e)としたら使えないワードはありませんが、引数の数が合わないとエラーが出ます。
public void paint(string CG1, string CG2, int ItiX)とすると当然DrawingImageとかが使えません。という状態です。
引用返信 編集キー/
■24953 / inTopicNo.5)  Re[3]: ビットマップ画像の表示について
□投稿者/ やじゅ (614回)-(2008/09/12(Fri) 14:15:23)
やじゅ さんの Web サイト
No24950 (裕猫 さん) に返信

言葉だけでは、分かりにくいです。
コードを提示すれば解決法が見つかるかも知れません。
その時は、本文の上にある、投稿モードを図表モードにするといいですよ
引用返信 編集キー/
■24954 / inTopicNo.6)  Re[4]: ビットマップ画像の表示について
□投稿者/ επιστημη (1317回)-(2008/09/12(Fri) 14:17:12)
επιστημη さんの Web サイト
> 使用するFORMのなかに書けば出来るのですが

それ見せて。そいつをクラス外に追い出せばいいのよね。

引用返信 編集キー/
■24955 / inTopicNo.7)  Re[4]: ビットマップ画像の表示について
□投稿者/ やじゅ (615回)-(2008/09/12(Fri) 14:24:50)
やじゅ さんの Web サイト
2008/09/12(Fri) 14:26:08 編集(投稿者)

No24951 (裕猫 さん) に返信

Form1のPaintメソッドの中にIllustクラスのメソッドを書いてるのでしょうか?
たぶん、下記のようなイメージにすればいいのでは?

Form1
public void paint(object sender, PaintEventArg e)

string CG1 = "xxx";
string CG2 = "xxx";
 int ItiX = 0;
 Illust.paint(CG1,CG2,ItiX,sender,e); ←Illustクラスのpaintメソッドを呼ぶ



引用返信 編集キー/
■24956 / inTopicNo.8)  Re[5]: ビットマップ画像の表示について
□投稿者/ PATIO (109回)-(2008/09/12(Fri) 14:24:57)
えーと。

C#を使っていると解っているのですし、カテゴリはC#にしましょうよ。
その方が内容が把握しやすくなります。

C#ってヘッダーに実装も書くのでしたっけ?
もし、xx.hとxx.csに分けて書いているとかなら関数宣言と
実際の実装部分で引数の定義が違っているとか無いですかねぇ。
そういうエラーが出ているならそれなりにリーズナブルな理由があるはずなので。

現在、提示されている情報からではその部分の判断が出来ません。
提示しても問題ないなら提示してしまった方が話が早そうです。

引用返信 編集キー/
■24958 / inTopicNo.9)  Re[5]: ビットマップ画像の表示について
□投稿者/ 裕猫 (27回)-(2008/09/12(Fri) 14:48:23)
No24955 (やじゅ さん) に返信
> Form1のPaintメソッドの中にIllustクラスのメソッドを書いてるのでしょうか?
ちがいます。FORM1はFORM1クラス、それとは別にIllustクラスを作っています。
引用返信 編集キー/
■24959 / inTopicNo.10)  Re[5]: ビットマップ画像の表示について
□投稿者/ 裕猫 (28回)-(2008/09/12(Fri) 14:56:58)
No24954 (επιστημη さん) に返信
> それ見せて。そいつをクラス外に追い出せばいいのよね。
すみません。プログラムがなくなってました。その元になったコードを表示します。
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public void Form1_Load(object sender, EventArgs e)
        {

        }


        private void button1_Click(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(@"G:\キャラクターCG\NScripter\メイド\M01.bmp");
            // 透過色に白を指定して画像を作成する
            bmp.MakeTransparent(System.Drawing.Color.White);
            Graphics g = CreateGraphics();
            Rectangle rect = new Rectangle(bmp.Width / 2, 0, 639, bmp.Height);
            g.DrawImage(bmp, 300, 479 - bmp.Height, rect, GraphicsUnit.Pixel);

            // リソースを解放します 
            bmp.Dispose();

        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.BackgroundImage = Properties.Resources.bg01;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.BackgroundImage = Properties.Resources.bg02;

        }

        private void button4_Click(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(@"G:\キャラクターCG\NScripter\メイド\M01.bmp");
            // 透過色に白を指定して画像を作成する
            bmp.MakeTransparent(System.Drawing.Color.Black);
            Graphics g = CreateGraphics();
            Rectangle rect = new Rectangle(0, 0, bmp.Width / 2 - 1, bmp.Height);
            g.DrawImage(bmp, 300, 479 - bmp.Height, rect, GraphicsUnit.Pixel);

            // リソースを解放します 
            bmp.Dispose();

        }
    }
このFORM1をIllustクラスに変えて 各button1_Clickイベントをペイントイベントにしてビットマップファイル名を引数にして各FORMから呼ぶようにできればいいわけです。(ダブルバッファリング入っていませんけど)  これだとボタン3つ押して一つの画像ができます。この動作を一つでできるようにしてどこからでも呼べるようにするのが目的です。

引用返信 編集キー/
■24961 / inTopicNo.11)  Re[6]: ビットマップ画像の表示について
□投稿者/ επιστημη (1318回)-(2008/09/12(Fri) 15:20:55)
επιστημη さんの Web サイト
>         private void button1_Click(object sender, EventArgs e)
>         {
>             Bitmap bmp = new Bitmap(@"G:\キャラクターCG\NScripter\メイド\M01.bmp");
>             // 透過色に白を指定して画像を作成する
>             bmp.MakeTransparent(System.Drawing.Color.White);
>             Graphics g = CreateGraphics();
>             Rectangle rect = new Rectangle(bmp.Width / 2, 0, 639, bmp.Height);
>             g.DrawImage(bmp, 300, 479 - bmp.Height, rect, GraphicsUnit.Pixel);
> 
>             // リソースを解放します 
>             bmp.Dispose();
> 
>         }

見たところ必要なのは ファイル名とGraphicsのみだから

public static class Util {
  public static void draw(string path, Graphics g) {
    Bitmap bmp = new Bitmap(path);
    bmp.MakeTransparent(System.Drawing.Color.White);
    Rectangle rect = new Rectangle(bmp.Width / 2, 0, 639, bmp.Height);
    g.DrawImage(bmp, 300, 479 - bmp.Height, rect, GraphicsUnit.Pixel);
    bmp.Dispose();
  }
}

Formからは: 
  private void button4_Click(object sender, EventArgs e) {
    Util.draw(CreateGraphics(), @"G:\キャラクターCG\NScripter\メイド\M01.bmp");
    ...
  }

とか、そんな感じ?

引用返信 編集キー/
■24964 / inTopicNo.12)  Re[7]: ビットマップ画像の表示について
□投稿者/ 裕猫 (29回)-(2008/09/12(Fri) 16:14:11)
No24961 (επιστημη さん) に返信
> Formからは:
> private void button4_Click(object sender, EventArgs e) {
> Util.draw(CreateGraphics(), @"G:\キャラクターCG\NScripter\メイド\M01.bmp");
> ...
> }
>
> とか、そんな感じ?
はいそうです。επιστημη さんのコード試してみたところ
private void button4_Click(object sender, EventArgs e)
{
Util.draw("G:\\キャラクターCG\\NScripter\\メイド\\M01.bmp", CreateGraphics());
}
でエラーは出ませんでした。...てことはこれで出来たのかな?絵は出てこないけど。とにかく出来るということはわかりました。あとは頑張ってみます。絵がでてきたら後ほど報告して解決済みにします。ありがとうございました。
引用返信 編集キー/
■24965 / inTopicNo.13)  Re[6]: ビットマップ画像の表示について
□投稿者/ 裕猫 (30回)-(2008/09/12(Fri) 16:18:13)
No24956 (PATIO さん) に返信
> C#を使っていると解っているのですし、カテゴリはC#にしましょうよ。
> その方が内容が把握しやすくなります。
すみません。カテゴリの設定位置に気づいていませんでした。次回よりそうします。ごめんなさい。
引用返信 編集キー/
■24966 / inTopicNo.14)  Re[6]: ビットマップ画像の表示について
□投稿者/ επιστημη (1319回)-(2008/09/12(Fri) 16:39:06)
επιστημη さんの Web サイト
> 絵は出てこないけど。とにかく出来るということはわかりました。

追試しました。ちゃんと描いてくれました。

引用返信 編集キー/
■24967 / inTopicNo.15)  Re[7]: ビットマップ画像の表示について
□投稿者/ 裕猫 (31回)-(2008/09/12(Fri) 16:57:53)
No24966 (επιστημη さん) に返信
> 追試しました。ちゃんと描いてくれました。
テストプログラムにてちゃんと描いてくれました。ありがとうございました。これで2週間の結果が出せました。これから本番のプログラムの作成にかかれます。本当にありがとうございました。m(_ ~_)m m(_ ~_)m m(_ ~_)m
解決済み
引用返信 編集キー/
■24969 / inTopicNo.16)  Re[8]: ビットマップ画像の表示について
□投稿者/ επιστημη (1320回)-(2008/09/12(Fri) 17:11:29)
επιστημη さんの Web サイト
2008/09/12(Fri) 17:12:25 編集(投稿者)

>>追試しました。ちゃんと描いてくれました。
> テストプログラムにてちゃんと描いてくれました。

後学のため伺いたいんですけど、何がダメだったのですか?
何が原因で「必要なワードが使えなかったり」したのですか?

# Graphicsとファイル名を引数にして外に追い出すのに5分とかからなかったのですけど。

解決済み
引用返信 編集キー/
■24978 / inTopicNo.17)  Re[9]: ビットマップ画像の表示について
□投稿者/ Jitta on the way (174回)-(2008/09/12(Fri) 19:11:33)
もの作る上でとっても大切なことを紹介します。

http://blogs.wankuma.com/jitta/archive/2006/02/17/21309.aspx
http://blogs.wankuma.com/jitta/archive/2006/02/02/21007.aspx
解決済み
引用返信 編集キー/
■25071 / inTopicNo.18)  Re[9]: ビットマップ画像の表示について
□投稿者/ 裕猫 (32回)-(2008/09/15(Mon) 08:23:19)
No24969 (επιστημη さん) に返信
> 後学のため伺いたいんですけど、何がダメだったのですか?
> 何が原因で「必要なワードが使えなかったり」したのですか?
返信遅くなりすみません。私グラフィックは動的扱いでなければ出来ないと思っていました。静的扱い方はεπιστημηさんに以前教えていただいていたんですが、そういうわけでようやく理解したての動的扱いで組んでみたのですが、どうも引数の渡し方の解釈ができていなかったようです。 あとグラフィックは(object sender, PaintEventArg)だけだと思っていたので、Graphicsとやりかたがあるのを知りませんでした。静的扱いで組めなかったのは、これが原因のようです。ただ単に私の知識不足ということでした。
引用返信 編集キー/
■25072 / inTopicNo.19)  Re[10]: ビットマップ画像の表示について
□投稿者/ 裕猫 (33回)-(2008/09/15(Mon) 08:24:37)
No24978 (Jitta on the way さん) に返信
> もの作る上でとっても大切なことを紹介します。
>
> http://blogs.wankuma.com/jitta/archive/2006/02/17/21309.aspx
> http://blogs.wankuma.com/jitta/archive/2006/02/02/21007.aspx

貴重なアドバイスありがとうございます。m(_ _)m
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -