| radianさん
>コメントアウトした理由がよく分からないんですが。問題点は何ですか?
新しいフォームが開いた時、イコライザーフォームでチェックボックスをオンとトラックバーの値を設定した時、OKを押すと非表示にしました。
その際に再度equalizerを開くとリセットボタンを押すと元の音にならないことが問題点です。
これを改善したいと質問させて頂きました。
WebSurferさん
>参考サイトは WPF アプリ、質問者さんが作っているのは Windows Forms アプリのようですが
>その違いを分かってますか?
そのサイトのデザインだけをWindows Forms アプリに作りました。
>・・・と言うところから、は関係なくて、Windows Forms アプリの作り方の
>基本的なところに問題がありそうな気がします。
>もしそうであれば、BASS.NET などは一切なしでその部分のコードの未提示してもらえば、
>見てくれる人が増えて、回答が得やすくなると思います。
分かりました。ありがとうございます。
魔界の仮面弁士さん
>このコードがあるということは、Form1 上には
>「private equalizer? eqInstance = null;」もしくは
>「private equalizer eqInstance = null!;」あるいは
>「private equalizer eqInstance = null;」といった
>フィールド宣言があるということでしょうか。
private equalizerForm equalizerForm;
を使用しています。
Form1.csを書き忘れました。
private void イコライザーToolStripMenuItem_Click(object sender, EventArgs e)
{
if (equalizerForm == null || equalizerForm.IsDisposed)
{
equalizerForm = new equalizerForm(this);
equalizerForm.FormClosed += (s, ev) =>
{
equalizerForm = null;
};
}
// equalizerFormを表示する前に、現在のインスタンスを非表示にする
if (equalizerForm.Visible)
{
equalizerForm.Hide();
}
// equalizerFormを表示する
equalizerForm.Show();
}
BASS\EQ\の中
「equalizerForm.cs」
「EQualizer.cs」
「IEQualizer.cs」
BASS\Player\
「AudioPlayer.cs」
プロジェクト名
「Form1.cs」
再生用の画像フォルダpng\
以下のファイルにクラス入れています。(書き忘れてすいません)
> if (sender is TrackBar tb)
> {
> int index = Array.IndexOf(trackbars, tb);
> BassEQ.BASS_UpdateEQ(fxEQ, index, (float)tb.Value);
> tip.SetToolTip(tb, $"{tb.Value}");
> }
ご指摘された通りトラックバーを纏めて出来ました。
最後に
private void button1_Click(object sender, EventArgs e)
{
// チェックボックスがチェックされている場合のみ、イコライザーの設定を更新する
if (CheckBox1.Checked)
{
// 一旦イコライザーの設定を削除
// form1.BASS_ChannelRemoveEQ(); ここを追加しました。
// トラックバーの値をイコライザーに設定
//form1.fxEQ[0] = TrackBar1.Value;
//以下省略
}
}
equalizerForm.cs
private Form1 form1;
public equalizerForm(Form1 form1)
{
InitializeComponent();
this.form1 = form1;
}
Form1には
public readonly EQualizer BassEQ = new();
public readonly int[] fxEQ = new int[11];を入れてます。
radianさん
WebSurferさん
魔界の仮面弁士さんありがとうございました。
一旦解決済みとさせて頂きます。
|