Exemplo n.º 1
0
            private static byte[] ReadWaveSamples(
                string file,
                float volume)
            {
                var samples = default(byte[]);
                var vol     = volume > 1.0f ? 1.0f : volume;

                using (var audio = new AudioFileReader(file)
                {
                    Volume = vol
                })
                    using (var resampler = new MediaFoundationResampler(audio, DefaultOutputFormat))
                        using (var output = new MemoryStream(51200))
                            using (var wrap = new WrappingStream(output))
                            {
                                WaveFileWriter.WriteWavFileToStream(wrap, resampler);
                                wrap.Flush();
                                wrap.Position = 0;

                                // ヘッダをカットする
                                var raw          = wrap.ToArray();
                                var headerLength = 0;
                                using (var wave = new WaveFileReader(wrap))
                                {
                                    headerLength = (int)(raw.Length - wave.Length);
                                }

                                // ヘッダをスキップした波形データを取得する
                                samples = raw.Skip(headerLength).ToArray();
                            }

                return(samples);
            }
Exemplo n.º 2
0
        public async void Load()
        {
            var dir = DirectoryHelper.FindSubDirectory(
                @"resources\icon\job");

            if (!Directory.Exists(dir))
            {
                return;
            }

            await WPFHelper.InvokeAsync(() =>
            {
                foreach (var job in (JobIDs[])Enum.GetValues(typeof(JobIDs)))
                {
                    var png = Path.Combine(dir, $"{job}.png");
                    if (!File.Exists(png))
                    {
                        continue;
                    }

                    var bmp = default(WriteableBitmap);
                    using (var ms = new WrappingStream(new MemoryStream(File.ReadAllBytes(png))))
                    {
                        bmp = new WriteableBitmap(BitmapFrame.Create(ms));
                    }

                    bmp.Freeze();
                    this.Icons[job] = bmp;
                }
            });

            this.isLoaded = true;
        }