Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        /// <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();
        }