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

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

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

全過去ログを検索

<< 0 >>
■22489  Re[17]: わんくま同盟勉強会 福岡#2 検討スレッド
□投稿者/ さかもと -(2008/07/24(Thu) 13:54:50)
>
    さかもとです。

    > (朝一から濃いのはという指摘が…)


    私のが薄いっていうことですかっ?!!














    薄いです♪

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

■51591  Re[4]: vb2008 listviewの表示に不都合
□投稿者/ yossi- -(2010/07/10(Sat) 18:08:42)
記事No.51436 のレス / END /過去ログ86より / 関連記事表示
削除チェック/

■87529  Re[3]: Icon について
□投稿者/ 魔界の仮面弁士 -(2018/06/01(Fri) 12:04:22)
    No87528 (夜叉丸 さん) に返信
    > データの後半部分のデータが消えています。
    > データサイズが正常な953バイトに対して682バイトしかなかったです。

    連続実行させて検証していないので、思いつきになりますが、
    > Icon icon = System.Drawing.Icon.FromHandle((new Bitmap(ms)).GetHicon());
    HICON からの読み取り中に、Bitmap が Dispose されてしまったとか?
    うーん。すぐには思い当たらないです。


    >  byte[] ret = ms.GetBuffer();
    GetBuffer には、未使用バイト領域が含まれる可能性がありえます。

    今回は問題無いとしても、念のため ToArray を使った方が良いと思いますよ。
    あるいは TryGetBuffer メソッドでも良いですけど。
    http://8thway.blogspot.com/2015/12/memorystream.html


    ちなみに、
      MemoryStream ms = new MemoryStream();
      ms.Write(Enumerable.Repeat(byte.MaxValue, 1024).ToArray(), 0, 1024);
      ms.WriteByte(byte.MaxValue);
      int i1 = ms.Capacity;
      int i2 = (int)ms.Length;
      byte[] b1 = ms.GetBuffer();
      byte[] b2 = ms.ToArray();
      ArraySegment<byte> b3; ms.TryGetBuffer(out b3);
      ms.Close();
    というコードの場合、
      i1 は 2048 (バッファ長)
      i2 は 1025 (実データ長)
      b1.Length は 2048 (バッファ長)
      b2.Length は 1025 (実データ長)
      b3 は .Offset = 0, .Count = 1025, .Array.Length = 2048
    という結果になりますね。



    > private byte[] GetBytearrayFromIcon(Icon icon)
    >  Bitmap bmp = icon.ToBitmap();

    > private Icon GetIconFromByteArray(byte[] bytes)
    >  bmp.Save(ms, ImageFormat.Png);

    .ico フォーマットではなく .png フォーマットで永続化しているのは、
    意図的なものでしょうか。


    もしも Ico 形式のまま無加工で永続化するなら、こんな感じで書けそうです。

    // 利用方法:
    //  byte[] binary = srcIcon.ToBinary();
    //  Icon dstIcon = bin.ToIcon();
    public static class IconExtensions
    {
     public static byte[] ToBinary(this Icon ico)
     {
      using (var ms = new MemoryStream())
      {
       ico.Save(ms);
       ms.Flush();
       return ms.ToArray();
      }
     }

     public static Icon FromBinary(this byte[] binary)
     {
      using (var ms = new MemoryStream(binary))
      {
       try { return new Icon(ms); } catch { return null; }
      }
     }
    }



    なお、画像の先頭 4 バイト見ることで、.ico / .png の判定ができます。

    byte[] bin4 = BinaryOfYourIcon.Take(4).ToArray();
    bool isIco = bin4.SequenceEqual(new byte[] { 0x00, 0x00, 0x01, 0x00 });
    bool isPng = bin4.SequenceEqual(new byte[] { 0x89, (byte)'P', (byte)'N', (byte)'G' });


    .ico 形式の場合、ファイル先頭の 0x00, 0x00, 0x01, 0x00 の後に続く 2 バイトが、
    格納されているアイコンの数を表します。

    System.Drawing.Icon の場合、それぞれのアイコンを個別に取り出す機能がありませんので、
    正確な画像データを得たい場合には No87527 で紹介した IconLib 等を利用してみてください。
記事No.87523 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87530  Re[4]: Icon について
□投稿者/ 夜叉丸 -(2018/06/01(Fri) 14:20:53)
    No87529 (魔界の仮面弁士 さん) に返信

    > 連続実行させて検証していないので、思いつきになりますが、
    >>Icon icon = System.Drawing.Icon.FromHandle((new Bitmap(ms)).GetHicon());
    > HICON からの読み取り中に、Bitmap が Dispose されてしまったとか?
    > うーん。すぐには思い当たらないです。
    >
    すみません。アイコンから取得したデータは正常でした。
    データを保存するところに問題がありました。

    >
    > GetBuffer には、未使用バイト領域が含まれる可能性がありえます。
    >
    > 今回は問題無いとしても、念のため ToArray を使った方が良いと思いますよ。
    > あるいは TryGetBuffer メソッドでも良いですけど。
    > http://8thway.blogspot.com/2015/12/memorystream.html
    >
    ms.GetBuffer() → ms.ToArray()
    に変更しました。
    (VisualStudio2017 C# .Net) ですが、ms.TryGetBuffer()は存在しなかったです。

    >
    > .ico フォーマットではなく .png フォーマットで永続化しているのは、
    > 意図的なものでしょうか。
    >
    意図しているものではなくて
    サンプルで引っ張ってきたもの(http://4423lab.wpblog.jp/archives/170)を使用しました。


    >
    > もしも Ico 形式のまま無加工で永続化するなら、こんな感じで書けそうです。
    >
    > // 利用方法:
    > //  byte[] binary = srcIcon.ToBinary();
    > //  Icon dstIcon = bin.ToIcon();

    bin は byte[] = binary だと思うのですが
    (VisualStudio2017 C# .Net) ですが、bin.ToIcon() は使えませんでした。


    > System.Drawing.Icon の場合、それぞれのアイコンを個別に取り出す機能がありませんので、
    > 正確な画像データを得たい場合には No87527 で紹介した IconLib 等を利用してみてください。

    現状では複数存在したとしてもどれを選べばよいかの
    条件判断ができないので、デフォルトで入ってくるアイコンでとりあえずは充分です。

    試しにIconLibを使ってアイコンを取得する方法も試してみます。
記事No.87523 のレス /過去ログ150より / 関連記事表示
削除チェック/

■88874  正規表現を使って部分文字列を取得する方法?
□投稿者/ 8823CenterTail -(2018/10/06(Sat) 00:22:35)

    分類:[C#] 

    初めて質問させていただきます。
    VisualStudio2015 C# を使用しています。
    次のような文字列があり、それぞれの日付、N部屋目の性別と人数を正規表現を使用して取得したいと考えています。
    Regex.Match を色々と試してみましたが、どうしてもうまく抜けません。
    アドバイスを頂けると助かります。
    よろしくお願いいたします。

    [2018-11-03][1部屋目][男性 2名 \0][2018-11-04][1部屋目][男性 2名 \0][2018-11-05][1部屋目][男性 2名 \0][2018-11-03][2部屋目][男性 2名 \0][2018-11-04][2部屋目][男性 2名 \0][2018-11-05][2部屋目][男性 2名 \0]
親記事 /過去ログ153より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -