private void InitCanvas() { _wallBmp = new WriteableBitmap(_scrRect32.Width, _scrRect32.Height, Constants.DPIX, Constants.DPIY, PixelFormats.Pbgra32, null); simDrawing.ClipGeometry = new RectangleGeometry(_scrRect); _liquidEffect = new Effect.LiquidEffect(); _liquidEffect.Threashold = 0.8; _liquidEffect.FillColor = Config.Instance.LiquidColor; _liquidEffect.Freeze(); _particleBrush = new SolidColorBrush(Config.Instance.LiquidColor); // 粒子をぼかして描画するための画像作成 _liquidGradPoint = new RenderTargetBitmap((int)_liquidRadius * 2, (int)_liquidRadius * 2, Constants.DPIX, Constants.DPIY, PixelFormats.Pbgra32); DrawingVisual dv = new DrawingVisual(); using (DrawingContext dc = dv.RenderOpen()) { dc.DrawRectangle(Brushes.Transparent, null, new Rect(0, 0, _liquidGradPoint.PixelWidth, _liquidGradPoint.PixelHeight)); dc.DrawEllipse(_gradBrush, null, new Point(_liquidRadius, _liquidRadius), _liquidRadius, _liquidRadius); } _liquidGradPoint.Render(dv); _liquidGradPoint.Freeze(); }
/// <summary>描画処理</summary> public void Draw() { if (!_model.IsAvailable) return; #region 設定値の反映 if (_liquidEffect.FillColor != Config.Instance.LiquidColor) { _liquidEffect = new Effect.LiquidEffect(); _liquidEffect.Threashold = 0.8; _liquidEffect.FillColor = Config.Instance.LiquidColor; _liquidEffect.Freeze(); } if (_particleBrush.Color != Config.Instance.LiquidColor) _particleBrush.Color = Config.Instance.LiquidColor; #endregion drawBackground(); // 粒子描画 if (Config.Instance.DrawLiquid) drawLiquid(); else drawParticles(); drawForeground(); }