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

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

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

Re[8]: Resourcesの中にある.pngファイルを表示させる


(過去ログ 138 を表示中)

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

■81406 / inTopicNo.1)  Resourcesの中にある.pngファイルを表示させる
  
□投稿者/ Pepper (20回)-(2016/09/17(Sat) 21:40:21)

分類:[.NET 全般] 

Resourcesフォルダーの中にある複数の画像ファイルを、
プログラム(C#)で実装させて表示する方法はありますか?



よろしくお願いします

引用返信 編集キー/
■81407 / inTopicNo.2)  Re[1]: Resourcesの中にある.pngファイルを表示させる
□投稿者/ WebSurfer (1036回)-(2016/09/17(Sat) 22:18:48)
No81406 (Pepper さん) に返信
> Resourcesフォルダーの中にある複数の画像ファイルを、
> プログラム(C#)で実装させて表示する方法はありますか?

何を作っているのでしょうか? Windows Forms アプリ? その他?

ASP.NET Web Forms アプリでもそういうことはできるけど、違うのでは
ないかと思っているのですが。

aspx ページでのリソースの利用
http://surferonwww.info/BlogEngine/post/2015/04/21/use-of-resources-in-aspx-page.aspx
引用返信 編集キー/
■81408 / inTopicNo.3)  Re[2]: Resourcesの中にある.pngファイルを表示させる
□投稿者/ Pepper (21回)-(2016/09/18(Sun) 12:38:10)
No81407 (WebSurfer さん) に返信

windows フォームアプリで作成しています


現在は、\bin\Debugの直下にiconフォルダーを作成して、
クラス化にしてそこから呼び出して表示しています

それを、Resourcesの中にある.pngファイルを見に行って表示させるように変更したい

クラス側
public static Bitmap picImage(PictureBox pic, string strFile, int intX, int intY, int intWidth, int intHeight)
{
//描画先とするImageオブジェクトを作成する
Bitmap canvas = new Bitmap(pic.Width, pic.Height);
//ImageオブジェクトのGraphicsオブジェクトを作成する
Graphics g = Graphics.FromImage(canvas);

//画像ファイルを読み込んで、Imageオブジェクトとして取得する
Image img = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + @"icon\" + strFile);  ← この辺を変更すればうまくいくと思うのですがどうでしょう?

//画像をcanvasの座標(0, 0)の位置に描画する
g.DrawImage(img, intX, intY, intWidth, intHeight);
//Imageオブジェクトのリースを解放する
img.Dispose();

//Graphicsオブジェクトのリソースを解放する
g.Dispose();

return canvas;
}

呼び出す側
this.picCard.Image = クラス名.picImage(picCard, "ファイル名.png", 0, 0, 700, 80);

引用返信 編集キー/
■81409 / inTopicNo.4)  Re[3]: Resourcesの中にある.pngファイルを表示させる
□投稿者/ WebSurfer (1037回)-(2016/09/18(Sun) 14:34:44)
No81408 (Pepper さん) に返信
> windows フォームアプリで作成しています

次回は必ず最初に書いてくださいね。余計なやり取りが省けますので。


> それを、Resourcesの中にある.pngファイルを見に行って表示させるように変更したい 

上のレスで紹介した記事の「(3) 独立したリソースアセンブリ」に書きましたが、例えば
プロジェクトに Resource1.resx という名前のアセンブリリソースファイルを追加すると
自動生成される Resource1.Designer.cs ファイルの中に、厳密に型指定されたリソース
クラス Resource1 が定義されます。

リソースファイルに文字列、テキストファイル、画像などを保存すると、Resource1 クラ
スに、保存したリソースを取得するためのプロパティが自動的に設定されます。

例えば画像の場合は以下のようになるはず。

/// <summary>
///   型 System.Drawing.Bitmap のローカライズされたリソースを検索します。
/// </summary>
public static System.Drawing.Bitmap PngSample {
    get {
        object obj = ResourceManager.GetObject("PngSample", resourceCulture);
        return ((System.Drawing.Bitmap)(obj));
    }
}

そのプロパティを使えばリソースとして埋め込まれた画像は取得できると思いますが、それ
で目的は果たせませんか?

引用返信 編集キー/
■81410 / inTopicNo.5)  Re[4]: Resourcesの中にある.pngファイルを表示させる
□投稿者/ Pepper (22回)-(2016/09/18(Sun) 15:01:34)
No81409 (WebSurfer さん) に返信
> ■No81408 (Pepper さん) に返信
>>windows フォームアプリで作成しています
>
> 次回は必ず最初に書いてくださいね。余計なやり取りが省けますので。
>
>
>>それを、Resourcesの中にある.pngファイルを見に行って表示させるように変更したい
>
> 上のレスで紹介した記事の「(3) 独立したリソースアセンブリ」に書きましたが、例えば
> プロジェクトに Resource1.resx という名前のアセンブリリソースファイルを追加すると
> 自動生成される Resource1.Designer.cs ファイルの中に、厳密に型指定されたリソース
> クラス Resource1 が定義されます。
>
> リソースファイルに文字列、テキストファイル、画像などを保存すると、Resource1 クラ
> スに、保存したリソースを取得するためのプロパティが自動的に設定されます。
>
> 例えば画像の場合は以下のようになるはず。
>
> /// <summary>
> /// 型 System.Drawing.Bitmap のローカライズされたリソースを検索します。
> /// </summary>
> public static System.Drawing.Bitmap PngSample {
> get {
> object obj = ResourceManager.GetObject("PngSample", resourceCulture);
> return ((System.Drawing.Bitmap)(obj));
> }
> }
>
> そのプロパティを使えばリソースとして埋め込まれた画像は取得できると思いますが、それ
> で目的は果たせませんか?
>



GetObjectに波線が付いてエラーが消えません

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー CS1061 'object' に 'GetObject' の定義が含まれておらず、型 'object' の最初の引数を受け付ける拡張メソッド 'GetObject' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください。 KindergartenAttendanceTablet C:\Users\康弘\Desktop\KindergartenAttendanceTablet\KindergartenAttendanceTablet\clsTablet.cs 74 アクティブ

引用返信 編集キー/
■81411 / inTopicNo.6)  Re[5]: Resourcesの中にある.pngファイルを表示させる
□投稿者/ WebSurfer (1038回)-(2016/09/18(Sun) 17:14:56)
No81410 (Pepper さん) に返信

> GetObjectに波線が付いてエラーが消えません

どうやって作るとそうなるのか、何も書いてないので分かりませんが・・・

普通に Visual Studio のウィザードで作れば、自動生成される Resource1.Designer.cs ファイル
の中身は以下のようになるはずですがそうなってますか?

//------------------------------------------------------------------------------
// <auto-generated>
//     このコードはツールによって生成されました。
//     ランタイム バージョン:4.0.30319.34209
//
//     このファイルへの変更は、以下の状況下で不正な動作の原因になったり、
//     コードが再生成されるときに損失したりします。
// </auto-generated>
//------------------------------------------------------------------------------

namespace WindowsFormsApplication1 {
    using System;
    
    
    /// <summary>
    ///   ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。
    /// </summary>
    // このクラスは StronglyTypedResourceBuilder クラスが ResGen
    // または Visual Studio のようなツールを使用して自動生成されました。
    // メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に
    // ResGen を実行し直すか、または VS プロジェクトをビルドし直します。
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resource1 {
        
        private static global::System.Resources.ResourceManager resourceMan;
        
        private static global::System.Globalization.CultureInfo resourceCulture;
        
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resource1() {
        }
        
        /// <summary>
        ///   このクラスで使用されているキャッシュされた ResourceManager インスタンスを返します。
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsFormsApplication1.Resource1", typeof(Resource1).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        
        /// <summary>
        ///   厳密に型指定されたこのリソース クラスを使用して、すべての検索リソースに対し、
        ///   現在のスレッドの CurrentUICulture プロパティをオーバーライドします。
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        
        /// <summary>
        ///   型 System.Drawing.Bitmap のローカライズされたリソースを検索します。
        /// </summary>
        internal static System.Drawing.Bitmap PngSample {
            get {
                object obj = ResourceManager.GetObject("PngSample", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
    }
}

引用返信 編集キー/
■81412 / inTopicNo.7)  Re[6]: Resourcesの中にある.pngファイルを表示させる
□投稿者/ WebSurfer (1039回)-(2016/09/19(Mon) 11:49:21)
マルチポスト
https://teratail.com/questions/48385
引用返信 編集キー/
■81413 / inTopicNo.8)  Re[6]: Resourcesの中にある.pngファイルを表示させる
□投稿者/ zakzak (2回)-(2016/09/19(Mon) 12:11:08)
プロジェクトでリソースを管理しているのであれば、
その画像のリソース名を使えば簡単に取得できますよ。
リソース名が"SampleImg"だとすると、

Image img = Properties.Resources.SampleImg;

でOKです。(ただし、VS2005以降に限る)
引用返信 編集キー/
■81414 / inTopicNo.9)  Re[7]: Resourcesの中にある.pngファイルを表示させる
□投稿者/ Pepper (23回)-(2016/09/19(Mon) 15:14:00)
WebSurferさん、zakzakさん
ありがとうございました。
又、ご迷惑おかけすると思いますがよろしくお願いします
解決済み
引用返信 編集キー/
■81421 / inTopicNo.10)  Re[8]: Resourcesの中にある.pngファイルを表示させる
□投稿者/ WebSurfer (1040回)-(2016/09/20(Tue) 10:08:18)
No81414 (Pepper さん) に返信

「解決済み」マークを付けたということは解決したのだと理解していますが、どのように
解決したのか書いてください。

自分は特に、普通に Visual Studio のウィザードで作れば、出るはずのないエラーが何故
出たのかが知りたいです。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -