DOBON.NETプログラミング道掲示板

■ 「新規作成」から投稿できます。
■ マルチポストされた投稿を見つけたときは、その投稿に返信することによりご報告ください。その際は匿名で投稿し、マルチポストされている場所を併記してください。
■ スパム対策のため、メールアドレスの先頭に"_"という文字が付加されています。
RSS 2.0 RSS 2.0 | RSS 0.91 | 携帯電話用 | 自分専用のアイコンを使用するには | 掲示板への要望 | 管理人に連絡 | お気楽掲示板
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
Nomalデザイナのプロパティウィンドウで静的プロパティを選択したい(2) | NomalPHPでシリアライズした、データをデシリアライズしたい(4) | Nomal二次元配列 インデックスが配列の境界外(2) | NomalVB.netで作成したexeのNgenによる弊害(1) | NomalDrawBezierの使い方について(7) | Nomalメジャーバージョンの異なるLog4netライブラリを参照したい(4) | NomalVB6→2005変換時のDeclare宣言のマーシャリング属性(8) | NomalGROUPBOXの複製について(vb.net)(1) | NomalActiveReports 3.0からActiveReports 7.0へのァイルコンバータについて(4) | NomalAccess OLEでExecuteNonQuery(3) | NomalKeyDownでの右コントロールキーイベント(2) | NomalExcel複数シートの印刷順序(3) | NomalWMPへno(3) | NomalDataGridViewの行番号(7) | Nomalapp.config定義によるネットワークトレースログの世代管理(2) | Nomalrelease/debugのどちらで作成されたものかを判断する方法(2) | NomalC#コンソールアプリでタイピング練習ソフト作成(3) | Nomal自分自身を呼び出すのはOKですか(1) | NomalWebBrowser Control foreachで値が消える(2) | NomalDeclare宣言するdllと参照追加をするdllの区別(4) | NomalTaskクラスを.NET Framework 2.0で実現させる方法(2) | NomalVS2017で作成されたDLLをVS2005で作成されたAPで使用する方法(4) | NomalWebBrowser Controlを使って、任意の値を取得(5) | NomalEditボックスに簡体字をセットする方法(2) | NomalList型でエラーが起きてしまい・・・(1) | Nomalフォルダ内の全ての容量を取得したい(4) | NomalWebClientが上手く動かない(2) | Nomal共変性と反変性ってこういうこと?(4) | Nomalモードレスフォーム Warning IDE0067を回避したい(7) | NomalLINQの拡張メソッドの定義(1) | Nomalこんな演算子初めて見ました。(5) | Nomalプロセスからウインドウを取得(4) | Nomalフォーム外のカーソルの変更(2) | NomalLINQのメソッド構文の書き方(3) | NomalVB.NETでCSVを読み込む際にSQL文を使いたい(3) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(2) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(5) | Nomalラムダ式の勉強中(2) | NomalWebClientで、短期間にDownloadStringAsyncを実行したい(2) | Nomalvb.net+SQLiteで複数データベースファイルへのトランザクション方法(3) | NomalNewの使い方間違ってますか?(4) | Nomalジェネリック型インターフェースを使った変数を扱いたい(3) | NomalC#をVBに変換(2) | NomalProcess.WaitForExitで正常に動作しない?(3) | NomalCatch時のex.StackTraceの情報(3) | Nomalユーザーコントロール内のテキストボックスのmodifiedプロパティ(4) | NomalPictureBox.Locationのキャンセル(3) | NomalJOIN操作の構文エラー(4) | NomalVisualStudioでマクロ(3) | NomalVisualStudioでExcelのVSTO開発(3) | NomalOracleDataAccess を参照したプログラムでデバッグモードが機能しなくなる(3) | NomalIE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法(7) | NomalマウスのないOSでマウスカーソルの表示(2) | NomalRDP接続でのネットワーク帯域制限(0) | NomalFILE.COPYでIOExceptionエラーが出る(11) | NomalToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法(2) | Nomal動的にプロパティや変数の値の取得(4) | NomalVB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法(4) | NomalMouseEventArgsのカレント座標(2) | Nomalリッチテキストボックスでの字間の調整(2) | NomalDrawImage でメモリ不足エラー(3) | Nomal必須コンポーネントの一覧に追加したい(0) | NomalCode128でバーコードが読み取れない(8) | NomalあるWindows10PCでビルドしたEXEがW8.1以下で実行エラー(5) | NomalApp.configのMy.Application.Log設定で使用できない属性が出る(0) | NomalVC++ → VB.Netに変換時に文法エラー(2) | Nomalvb2010を使用したmicrosoft Wordの任意の行の削除(0) | NomalVb.netからAccessへの接続について(3) | NomalSQL-Server Compact 4.0が表示されない(2) | Nomalバーコードの数字を非表示にしたい(2) | Nomal令和の日付への対応(3) | Nomalスクロールバーが出た時に高さを変えたい(4) | Nomal自作したアプリの発行元を明記したい(2) | NomalHTTP 417エラーを発生させるためのIIS設定はどうすればよいか(3) | Nomal起動ディスプレイの指定方法について(6) | NomalSystem.Threading.Thread.Sleep()と変数(2) | NomalVisual Studio DataTableの値のアクセスの仕方(2) | NomalDatagridviewのクリア(2) | NomalDataGridView 行の背景色の設定(2) | NomalListBoxにデータが表示されない(6) | NomalPIctureBox同士を論理合成したい(3) | NomalDrawString前のFillRectangle有無により文字の太さが違う理由について教えて下さい(3) | Nomalポルトガル語の登録(5) | NomalnumericUpDwonコントロールのvalue(2) | Nomalデータセット定義ファイルからDataTable(3) | NomalDataTableの構造が同じか調べるメソッド(2) | Nomalネットの画像の複数枚を重ね合わせたい(3) | Nomalリストを別フォームに渡す方法(9) | Nomal例外発生した場合に変数をcatchに渡したい(9) | NomalRejectChangesについて(2) | Nomal数字だけで構成されてるCSVフィールドが自動的に数値として解釈される(7) | NomalDataGridViewで検索をかける方法(3) | NomalDataGridViewの選択時の色を透明にしたい(3) | NomalPC機種によってスタートアップ画面が中央から左上にずれる、Fontがおかしくなる。(2) | Nomalタスクスケジュール登録時の例外メッセージ(2) | Nomal参照dllへの文字列引数をutf8で渡したい。(13) | Nomal管理者モードでクリック(2) | NomalVB2017でのインストーラ作成時のエラーについて(2) | Nomal文字列を8bit に戻してから UTF-8 に変換する方法(6) | NomalDatagridViewの行高さ変更について(4) |



■記事リスト / ▼下のスレッド
■34533 / 親記事)  デザイナのプロパティウィンドウで静的プロパティを選択したい
□投稿者/ masa 一般人(1回)-(2020/09/15(Tue) 22:14:50)
  • アイコン環境/言語:[Windows 10 64bit, C# WinForms, .NET Framework 4.7.2] 
    分類:[.NET] 

    2020/09/15(Tue) 22:16:46 編集(投稿者)

    久しぶりに投稿させていただきます。

    C#のWinFormsアプリケーションでカスタムコントロールを作成しています。
    デザイナのプロパティウィンドウにおいて、クラス型プロパティの設定値を
    自作クラスの静的プロパティの中から選択・ソースに反映させたいです。

    イメージとしてはColorプロパティでシステムのControlを選択すると、
    ソースにSystem.Drawing.SystemColors.Control;と反映されるのを実現させたいです。

    以下は例として、カスタムコントロールのForeColorを自作クラスの静的プロパティから選択させるサンプルです。
    このままだと、ソースにはSystem.Drawing.Color.FromArgb(((int)(((byte)(254)))), ((int)(((byte)(254)))), ((int)(((byte)(254)))));のように反映されてしまうため、
    MyLabelColors.MyWhite;のように反映されるようにしたいです。
    上手く言葉で説明できず恐縮ですが、どなたか解決策をご教示いただけますと幸いです。

    public class MyLabel : Label
    {
    [Editor(typeof(MyLabelTypeEditor), typeof(UITypeEditor))]
    public override Color ForeColor { get => base.ForeColor; set => base.ForeColor = value; }
    }

    public class MyLabelTypeEditor : UITypeEditor
    {
    public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) => UITypeEditorEditStyle.DropDown;

    public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
    {
    IWindowsFormsEditorService editorService = null;
    if (provider != null) editorService = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
    if (editorService == null) return value;

    var listBox = new ListBox();
    listBox.Click += (sender, e) => editorService.CloseDropDown();
    foreach (var propertiy in typeof(MyLabelColors).GetProperties())
    {
    listBox.Items.Add(propertiy.Name);
    }
    editorService.DropDownControl(listBox);

    return (listBox.SelectedItem != null ? typeof(MyLabelColors).GetProperty(listBox.SelectedItem.ToString()).GetValue(null) : value);
    }
    }

    public class MyLabelColors
    {
    public static Color MyBlack { get => Color.FromArgb(1, 1, 1); }
    public static Color MyWhite { get => Color.FromArgb(254, 254, 254); }
    }
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34534 / ResNo.1)  Re[1]: デザイナのプロパティウィンドウで静的プロパティを選択したい
□投稿者/ Hongliang 大御所(586回)-(2020/09/16(Wed) 09:43:37)
  • アイコン試してはいないですが、以下のページが参考にならないでしょうか。
    http://www.comrade.co.jp/component/dotnetroom/kt_vsdn/kt_vs5b.htm
違反を報告
引用返信
■34536 / ResNo.2)  Re[2]: デザイナのプロパティウィンドウで静的プロパティを選択したい
□投稿者/ masa 一般人(2回)-(2020/09/17(Thu) 22:51:54)
  • アイコンNo34534に返信(Hongliangさんの記事)
    > 試してはいないですが、以下のページが参考にならないでしょうか。
    > http://www.comrade.co.jp/component/dotnetroom/kt_vsdn/kt_vs5b.htm
    回答頂きありがとうございます。

    ページに記載されていたInstanceDescriptorについて調べてみたところ、SystemColorsもColorConverter内でInstanceDescriptorによって実現されていることが分かりました。
    しかしColorConverterを継承してもColor構造体からMyLabelColorsの特定ができなかったため、
    自作のクラスを作成して以下のソースのようにすることで目的は達成できました。ありがとうございます。

    ただ、基本的には問題ないのですが、プロパティウィンドウで値を変更すると稀にDesigner.csのソースが「this.myLabel1.ForeColor = ((PropertyTest.MyLabelColor)(PropertyTest.MyLabelColor.MyWhite));」のようにキャストがついてしまうことがあります。
    VisualStudioを立ち上げた直後にプロパティウィンドウで値を変更すると「this.myLabel1.ForeColor = PropertyTest.MyLabelColor.MyWhite;」のようにキャストはつかず期待通りになります。
    常にキャストがつかないようにしたいのですが、引き続きお知恵を拝借できますでしょうか。よろしくお願い致します。

    public class MyLabel : Label
    {
    public new MyLabelColor ForeColor
    {
    get => _ForeColor;
    set
    {
    _ForeColor = value;
    base.ForeColor = _ForeColor.Color;
    }
    }
    private MyLabelColor _ForeColor;
    }

    public class MyLabelTypeConverter : TypeConverter
    {
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
    {
    return true;
    }

    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
    {
    return new StandardValuesCollection(typeof(MyLabelColor).GetProperties().Select(p => p.Name).ToList());
    }

    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
    if (sourceType == typeof(string))
    {
    return true;
    }
    return base.CanConvertFrom(context, sourceType);
    }

    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
    {
    if (value is string)
    {
    var myLabelColor = typeof(MyLabelColor).GetProperty(value.ToString())?.GetValue(null);
    if (myLabelColor != null)
    {
    return myLabelColor;
    }
    else
    {
    return new MyLabelColor("UnknownColor", Color.Transparent);
    }
    }
    return base.ConvertFrom(context, culture, value);
    }

    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
    {
    if (destinationType == typeof(InstanceDescriptor))
    {
    return true;
    }
    return base.CanConvertTo(context, destinationType);
    }

    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
    {
    if (destinationType == typeof(InstanceDescriptor))
    {
    return new InstanceDescriptor(typeof(MyLabelColor).GetProperty(value.ToString()), null);
    }
    return base.ConvertTo(context, culture, value, destinationType);
    }
    }

    [TypeConverter(typeof(MyLabelTypeConverter))]
    public class MyLabelColor
    {
    public static MyLabelColor MyBlack => new MyLabelColor(nameof(MyBlack), Color.FromArgb(1, 1, 1));
    public static MyLabelColor MyWhite => new MyLabelColor(nameof(MyWhite), Color.FromArgb(254, 254, 254));

    public string Name;
    public Color Color;

    public MyLabelColor(string name, Color color)
    {
    this.Name = name;
    this.Color = color;
    }

    public override string ToString()
    {
    return this.Name;
    }
    }
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34529 / 親記事)  PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ シルビア大好き 一般人(1回)-(2020/09/14(Mon) 17:01:14)
  • アイコン環境/言語:[VB.net .NET Framework 3.5] 
    分類:[.NET] 

    PHPでシリアライズしたデータを
    .netにてデシリアライズしたいのですが、
    参考になるようなページが見つからないです。

    jsonフォーマットではありません。
    a:1:{s1:10:"2020-10-01";
    のフォーマットとなります。

    データはテキスト形式ですが、それをデシリアライズしたいと考えております。
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■34530 / ResNo.1)  Re[1]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ 魔界の仮面弁士 大御所(1295回)-(2020/09/15(Tue) 11:50:44)
  • アイコンNo34529に返信(シルビア大好きさんの記事)
    > a:1:{s1:10:"2020-10-01";
    > のフォーマットとなります。

    a:1 という事から、要素数 1 の配列のように見受けられますが、
    提示されたフォーマットだと、unserialize できないのではありませんか?

    PHP は触ったことが無いので良く知らないのですが、
     serialize( array( '2020-10-01' ) );
    とも違うようですし。


    『a:1:{s1:10:"2020-10-01";』ではなく、
    『a:1:{i:0;s:10:"2020-10-01";}』とかで良ければ、こんなのとか。

    /// <seealso cref="https://gist.github.com/xiangwan/1225981/1f6d12679fe510ff241468561e0f80fa757f8db4"/>
    static void Main()
    {
     var text = "a:1:{i:0;s:10:\"2020-10-01\";}";
     dynamic contents = new Serializer().Deserialize(text);
    }
違反を報告
引用返信
■34531 / ResNo.2)  Re[2]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ 魔界の仮面弁士 大御所(1296回)-(2020/09/15(Tue) 11:55:12)
  • アイコンNo34530に追記(魔界の仮面弁士の記事)
    > /// <seealso cref="https://gist.github.com/xiangwan/1225981/1f6d12679fe510ff241468561e0f80fa757f8db4"/>

    おっと、VB でしたか。

    上記の C# クラスを VB に翻訳して使うか、
    C# で DLL を作って、それを VB から参照設定してみてください。
違反を報告
引用返信
■34532 / ResNo.3)  Re[3]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ 魔界の仮面弁士 大御所(1297回)-(2020/09/15(Tue) 13:26:19)
  • アイコンNo34531に返信(魔界の仮面弁士さんの記事)
    >>> a:1:{s1:10:"2020-10-01";
    > 上記の C# クラスを VB に翻訳して使うか、
    > C# で DLL を作って、それを VB から参照設定してみてください。

    別案。検索してみたらこんなのを見つけました。
    http://vbcity.com/forums/t/166368.aspx


    8/16/2012 7:06 AM の発言で紹介されている
    PHPSerializationLibrary.dll を参照設定に加えて、こんな感じです。

    PHP 本家の実装ほどには、厳密に検査していないようですので、
    最初の質問にあったフォーマットであっても、
    エラー無くデシリアライズされてしまうようです。

    Dim php As New Conversive.PHPSerializationLibrary.Serializer()
    Dim contents1 = php.Deserialize("a:1:{i:0;s:10:""2020-10-01"";}")
    Dim contents2 = php.Deserialize("a:1:{s1:10:""2020-10-01"";")
    Dim contents3 = php.Deserialize("a:1:{s:10:""2020-10-01"";")
    Dim contents4 = php.Deserialize("a:1:{s:10:""2020-10-01"";}")


    なお、上記の結果は下記と同様です。

    Dim contents1 As Object = New ArrayList() From {"2020-10-01"}
    Dim contents2 As Object = New Hashtable() From {{"2020-10-01", ""}}
    Dim contents3 As Object = New Hashtable() From {{"2020-10-01", New Object()}}
    Dim contents4 As Object = New Hashtable() From {{"2020-10-01", New Object()}}
違反を報告
引用返信
■34535 / ResNo.4)  Re[4]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ シルビア大好き 一般人(3回)-(2020/09/16(Wed) 14:49:33)
  • アイコン> 魔界の仮面弁士さん
    回答いただき、ありがとうございます。
    最初にいただいた、回答に記載のURLにある
    C#のコードを.netに合わせて作ってみたところ、
    ハッシュテーブルとして、変数に設定することが出来ました。

    あとは、データをどのように扱うべきか検討する必要がありますが、
    そこから先は、自身で考えるべき内容なので、頑張ります。

    大変助かりました。
    ありがとうございます。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-4]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34526 / 親記事)  二次元配列 インデックスが配列の境界外
□投稿者/ タサケン 一般人(1回)-(2020/09/02(Wed) 23:17:44)
  • アイコン環境/言語:[環境:Windows 10 64bit 使用言語:C# .NET Frameworkのバージョン:4.7.2] 
    分類:[.NET] 

    以下のようにプログラムしてデバッグしたら
    インデックスが配列の境界外です
    と出てしまいますどうすればいいか教えてください

          int[,] array = new int[5, 5];

    int y = array.GetLength(0);
    int timesx = 1;
    int counter = 0;
    int counter2 = 0;
    int number2 = 0;
    if(array.GetLength(1)%2==0)
    {
    number2 = 1;
    }

    for (int number = 1; number <= array.Length; number++)
    {
    for (int x = array.GetLength(1) - 1; x >= number2; x--)
    {
    counter++;

    if (counter % 2 == 1)
    {
    timesx = y * 2 - 1;
    }
    if (x == 0)
    {
    timesx = y - 1;
    }
    while (timesx > 0)
    {
    if (counter % 2 == 0)
    {
    x = -x;
    y = -(y - 1);
    }
    else
    {
    counter2++;
    if (counter2 % 2 == 1)
    {
    y = 0;
    }
    else
    {
    x = -x;
    y = 1;
    }
    if (x == 0)
    {
    y = 1;
    }
    }
    array[x, y] = number;
    if (x < 0)
    {
    x = -x;
    }
    y = array.GetLength(0);
    timesx--;
    }
    counter2 = 0;
    timesx = 1;

    }
    }
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34527 / ResNo.1)  Re[1]: 二次元配列 インデックスが配列の境界外
□投稿者/ Hongliang 大御所(585回)-(2020/09/03(Thu) 08:59:04)
  • アイコン
    例えばこの部分
    array[x, y] = number;
    if (x < 0)
    {
        x = -x;
    }
    配列の添え字が負になることはないのですから、
    xを添え字に使った後で負かどうか判定するというのは
    ロジックとしておかしいですね。
    
    まあ何がどうなるのが正解かを知らないので、
    「どうすればいいか」は私には答えられませんが。

違反を報告
引用返信
■34528 / ResNo.2)  Re[1]: 二次元配列 インデックスが配列の境界外
□投稿者/ 魔界の仮面弁士 大御所(1293回)-(2020/09/03(Thu) 08:59:35)
  • アイコンNo34526に返信(タサケンさんの記事)
    > int[,] array = new int[5, 5];
    上記により、5×5 すなわち 25要素の配列が確保されますね。
    それぞれの添字は 0〜4 の範囲となります。

     [0,0], [1,0], [2,0], [3,0], [4,0],
     [0,1], [1,1], [2,1], [3,1], [4,1],
     [0,2], [1,2], [2,2], [3,2], [4,2],
     [0,3], [1,3], [2,3], [3,3], [4,3],
     [0,4], [1,4], [2,4], [3,4], [4,4]


    > インデックスが配列の境界外です
    > と出てしまいます

    array 配列に渡している添字が
    「0≦x≦4」かつ「0≦y≦4」になっていないからです。


    > array[x, y] = number;
    に至るまでの処理を良く見直してみてください。

    最初にこの行に来た段階では、
     「x = 4」「y = 0」、「number = 0」
    となるので、問題無く代入できます。

    しかし 2 回目にここに来た時には、
     「x = -1」「y = 1」、「number = 1」
    となっているわけですから、array[x, y] へのアクセスが
    IndexOutRangeException を誘発するのは当然のことです。


    > どうすればいいか教えてください

    コードを修正してください。

    エラーが出ないようするだけなら、添字が範囲外の時には
    配列を読み書きしないようにすればエラーは出なくなります。

    しかしそれが期待する動作であるかは別問題です。
    そもそも x や y が範囲外になってしまうことが問題というのであれば、
    そこに至るまでの処理を見直す必要があるでしょう。


    いずれにせよ、x や y の取るべき範囲は 0〜4 に限られますが、
    まずはループ範囲の確認からですね。


    > for (int number = 1; number <= array.Length; number++)
    の処理は、number が 1〜25 という範囲を紡ぐことを意味します。

    > for (int x = array.GetLength(1) - 1; x >= number2; x--)
    number2 は 0 か 1 のいずれかになる想定であり、
    今回の場合は number2 が 0 と割り当てられています。
    そのため上記ループは、x が 4〜0 という範囲をとることになります。


    問題は、その x ループ内で、
    何度か「x = -x;」という表現が登場していることです。


    x が取りうる範囲は 0〜4 なのですから、正負符号を反転させることに
    合理性があるとは思えません。

    ましてや、変数 x は for のループカウンターにもなっているわけですから、
    ループ途中でカウンタの値を変更してしまうと、ループ回数の判定が
    分かりにくくなります。


    そもそもこの一連の処理で、何をさせたいのでしょうか?
    一連のコードで何を行おうとしているのか、
    処理の「意図」あるいは「目的」を知っているのは
    コードを組んだ御本人だけです。

    あるいはコードの各処理の意味を説明して頂ければ、
    第三者でも問題点を指摘できるかもしれません。
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34521 / 親記事)  VB.netで作成したexeのNgenによる弊害
□投稿者/ 金ちゃん 一般人(1回)-(2020/08/05(Wed) 15:41:37)
  • アイコン環境/言語:[VB.net Oracle ODP.net] 
    分類:[.NET] 


    お世話になっております。金ちゃんと申します。

    今回VB6からVB.netにマイグレーションを行いました。
    DBはOracleでVB.netからはODP経由でDB接続していますが、
    何故かコンパイルしたexe(3Mぐらいのサイズ)にNgenをかけるとDB接続だけで1.5秒ぐらいかかってしまいます。
    逆にNgenをかけなければ0.5秒ぐらいでDB接続出来ます。
    Ngenする事でNgenなしの場合と比べて性能が劣化するパターンがあるのでしょうか?
    ※exe起動直後にDBからデータを取得しパブリック変数に値の格納をする場合にも同じような症状が発生してます。

    漠然とした質問で申し訳ありませんが、藁にもすがりたい状態で困ってます。

    よろしくお願いします。
違反を報告
引用返信

▽[全レス1件(ResNo.1-1 表示)]
■34522 / ResNo.1)  【報告】この投稿はマルチポストです
□投稿者/ (報告) 大御所(275回)-(2020/08/05(Wed) 22:45:17)
  • アイコンこの投稿はマルチポストです。もし元記事の投稿者にマルチポストの心当たりがない場合は、すぐに返信でお知らせください。

    ●マルチポストされている場所
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=95477

    ----------
    この掲示板ではマルチポストが禁止されています。詳しくは、「書き込みのルールについて」をお読みください。

    ●書き込みのルールについて
    https://dobon.net/vb/bbs/index.html
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-1]



■記事リスト / ▲上のスレッド
■34510 / 親記事)  DrawBezierの使い方について
□投稿者/ つばさ 一般人(1回)-(2020/07/31(Fri) 17:38:42)
  • アイコン環境/言語:[Win10 VB2017] 
    分類:[.NET] 

     はじめまして、よろしくお願いします。
    Win10でVB2017を使用しています。

    現在、ベジェ曲線をPivtureBox表示に挑戦しています。

    Dim Bezier_1 As New Point(66, 663)
    Dim Bezier_2 As New Point(96, 784)
    Dim Bezier_3 As New Point(96, 784)
    Dim Bezier_4 As New Point(236, 731)

    g.DrawBezier(Pen_Red, Bezier_1, Bezier_2, Bezier_3, Bezier_4)

    と、記述した時の描画が、添付画像になります。
    赤色ラインがVB出力ですが、実際のイラストレーターのライン(黒色ライン)と
    かなり違った結果になります。

    始点終点、制御点が2点の時は問題ないのですが
    制御点が1点の時の3点ベジェ曲線の時にこうなります。

    3点ベジェ曲線の記述方法のアドバイスを頂けたら嬉しいのですが
    よろしくお願いします。(うまく説明できてないと思いますが、すみません。)

191×140
イメージ
2020-07-31.jpg
/17KB
違反を報告
引用返信

▽[全レス7件(ResNo.3-7 表示)]
■34515 / ResNo.3)  Re[3]: DrawBezierの使い方について
□投稿者/ 魔界の仮面弁士 大御所(1290回)-(2020/08/02(Sun) 16:55:03)
  • アイコン
    No34514に返信(つばささんの記事)
    > 3点ベジェの曲線を表示するのは、座標計算をしなければ
    > 思ったような曲線は、得られないようですね。
    
    …あれ?
    
    質問内容は「DrawBezier メソッドの使い方について」であって、
    黒色ラインを描く方法についてでは無いと思ったのですが。
    
    
    曲線の細かい話については、この辺りに書かれていますが、それはさておき。
    http://www.f.waseda.jp/moriya/PUBLIC_HTML/education/classes/infomath6/applet/fractal/spline/
    
    2 次ベジエを 3 次ベジエに変換したいのであれば、2次における
    「始点〜制御点までの 2/3 の位置」と
    「終点〜制御点までの 2/3 の位置」を
    3 次の第一制御点・第二制御点として指定してみてください。
    
    
    > 実際のイラストレーターのライン(黒色ライン)と
    イラストレーター(Illustrator?)を見たことが無いので
    黒色ラインが 2 次ベジエであるという、
    当方の予想が正しいのかは分かりません。
    そちらの仕様確認はご自身で行ってください。
    
    
    
    Module GraphicsExtension
      <System.Runtime.CompilerServices.Extension>
      Public Sub DrawQuadCurve(this As Graphics, pen As Pen, pt1 As PointF, pt2 As PointF, pt3 As PointF)
        Dim p1 As New PointF((pt1.X + 2.0F * pt2.X) / 3.0F, (pt1.Y + 2.0F * pt2.Y) / 3.0F)
        Dim p2 As New PointF((2.0F * pt2.X + pt3.X) / 3.0F, (2.0F * pt2.Y + pt3.Y) / 3.0F)
        this.DrawBezier(pen, pt1, p1, p2, pt3)
      End Sub
    End Module
    
    
    とりあえず上記を貼り付けたうえで、先の
     .DrawBezier(bezierPen, points(0), points(1), points(1), points(2))
    の結果を
     .DrawQuadCurve(bezierPen, points(0), points(1), points(2))
    と比較してみてください。

違反を報告
引用返信
■34516 / ResNo.4)  Re[4]: DrawBezierの使い方について
□投稿者/ つばさ 一般人(3回)-(2020/08/03(Mon) 08:14:24)
  • アイコン説明不足にも関わらづ、追加の解説ありがとうございます。
    最初の投稿画像ですが、説明を加えたものを添付致します。
    DrawBezierの3点での使い方を検索したのですが
    4点での使い方しか無いように思い試してみると違う形の結果でした。

    そこで制御点を作ることを考えたのですが、参考ページがなかったので
    数値を変化させながら結果を重ねて表示することを繰り返しました。
    元の制御点から60%の位置が丁度イラストレーターの画像と
    一致するような結果になりました。

    いくつかテストAIデータを作って、試したのですが問題なさそうです。
     しかし「ベジェ曲線」の描画方法が、誤差を考えると
    こんなやり方のはずがないと思い質問をしました。

    たとえば
      DrawBezier(Color、始点、制御点1、制御点2、終点、描画形式)
        の、ような記述で
    描画形式(ラインの種類)を指定した場合にその指定で描画してくれるのでは?
    この答えは分かりませんでしたので、今回こちらで質問させていただきました。

    2度に渡ってわかりやすい解説、ありがとうございます。

225×206
イメージ
2020-07-30.png
/7KB
違反を報告
引用返信
■34518 / ResNo.5)  Re[5]: DrawBezierの使い方について
□投稿者/ 魔界の仮面弁士 大御所(1292回)-(2020/08/03(Mon) 15:00:00)
  • アイコンNo34516に返信(つばささんの記事)
    > DrawBezierの3点での使い方を検索したのですが
    > 4点での使い方しか無いように思い試してみると違う形の結果でした。

    ベジエ曲線の考え方は、下記のアニメーションを見ると分かりやすいかと思います。
    https://postd.cc/bezier-curves/


    なお、.NET Framework のヘルプで DrawBezier について調べてみると、
    ベジェではなくベジエと表記されているわけですが、Be'zier の発音は
    ベジェよりはベジエの方が原音に近いようです。(ベズィエといった感じ?)



    > 元の制御点から60%の位置が丁度イラストレーターの画像と
    > 一致するような結果になりました。

    2 次 → 3 次変換を、数学的証明した記事がありました。
    60% ではなく、2/3 の位置ですね。
    https://nowokay.hatenablog.com/entry/20070623/1182556929


    3 次 → 2 次はもう少し複雑です。次数を落としている分、
    1 つの 2 次ベジエで表現できるとは限らないので、
    複数の 2 次ベジエ曲線を並べて近似曲線にするなどして対応します。
    http://nutsu.com/blog/2008/021520_as_bezierconvert.html
違反を報告
引用返信
■34519 / ResNo.6)  Re[6]: DrawBezierの使い方について
□投稿者/ つばさ 一般人(4回)-(2020/08/04(Tue) 07:49:18)
  • アイコン お世話になります。
    新たな情報、ありがとうございます。

    制御点の値を3つほど作ってラインを書いてみました。
    その後、AIのラインとVBのラインを重ねての画像です。

    制御点60%でほぼ一致することから、数式から導かれるBezier曲線と
    A社、M社の3点Bezier曲線は独自のものと思われます。

    3点Bezier曲線に関しては、ユーザーが必要な係数を
    探し出しセットする仕様なのかもしれませんね?

    この問題は、最初あまり気にならなかったのですが
    これから先に進めていく過程で、座標計算にて曲線の通過ポイントを
    割り出さなければいけない場面が出てくるのですが
    今の時点で、遭遇できたことは幸いです。

    幾度もの解説、並びにアドバイスいただき感謝しています。
    ありがとうございました。

解決み!
違反を報告
引用返信
■34520 / ResNo.7)  Re[7]: DrawBezierの使い方について
□投稿者/ つばさ 一般人(5回)-(2020/08/04(Tue) 08:10:50)
  • アイコン画像が大きくて、添付できていませんね?
    もう一度、投稿です。
解決み!
158×112
イメージ
2020-08-04.jpg
/16KB
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-7]






Mode/  Pass/


- Child Tree -

2020/09/19(Sat) 07:38:00 に作成されたキャッシュを表示しています。
生のデータを表示する | キャッシュを最新にする