コード例 #1
0
ファイル: BitmapCanvas.cs プロジェクト: HHChaos/LottieUwpTest
 public RenderTargetSave(CanvasRenderTarget canvasRenderTarget, int paintFlags, PorterDuffXfermode paintXfermode, byte paintAlpha)
 {
     CanvasRenderTarget = canvasRenderTarget;
     PaintFlags         = paintFlags;
     PaintXfermode      = paintXfermode;
     PaintAlpha         = paintAlpha;
 }
コード例 #2
0
 public RenderTargetSave(DeviceContext renderTarget, int paintFlags, PorterDuffXfermode paintXfermode, byte paintAlpha)
 {
     RenderTarget  = renderTarget;
     PaintFlags    = paintFlags;
     PaintXfermode = paintXfermode;
     PaintAlpha    = paintAlpha;
 }
コード例 #3
0
        void InitializeBorderIfNeeded()
        {
            if (_strokeThickness == 0)
            {
                DisposeBorder(true);
                return;
            }

            if (_maskPath == null)
            {
                _maskPath = new Path();
            }

            if (_maskPaint == null)
            {
                _maskPaint = new APaint(PaintFlags.AntiAlias);
                _maskPaint.SetStyle(APaint.Style.FillAndStroke);

                PorterDuffXfermode porterDuffClearMode = new PorterDuffXfermode(PorterDuff.Mode.Clear);
                _maskPaint.SetXfermode(porterDuffClearMode);
            }

            if (_borderPaint == null)
            {
                _borderPaint = new APaint(PaintFlags.AntiAlias);
                _borderPaint.SetStyle(APaint.Style.Stroke);
            }
        }
コード例 #4
0
 public RenderTargetSave(IDrawingContextLayerImpl layer, DrawingContext layerCtx, Size bitmapSize,
                         PorterDuffXfermode paintTransferMode)
 {
     BitmapSize        = bitmapSize;
     Layer             = layer;
     Context           = layerCtx;
     PaintTransferMode = paintTransferMode;
 }
コード例 #5
0
 public RenderTargetSave(IDrawingContextImpl renderTarget, int paintFlags, PorterDuffXfermode paintXfermode,
                         byte paintAlpha)
 {
     RenderTarget  = renderTarget;
     PaintFlags    = paintFlags;
     PaintXfermode = paintXfermode;
     PaintAlpha    = paintAlpha;
 }
コード例 #6
0
        public ClingDrawer(Resources resources, Color showcaseColor)
        {
            this.showcaseColor = showcaseColor;

            PorterDuffXfermode mBlender = new PorterDuffXfermode(PorterDuff.Mode.Clear);

            mEraser       = new Paint();
            mEraser.Color = Color.White;
            mEraser.Alpha = 0;
            mEraser.SetXfermode(mBlender);
            mEraser.AntiAlias = true;

            mShowcaseDrawable = resources.GetDrawable(Resource.Drawable.cling_bleached);
            mShowcaseDrawable.SetColorFilter(showcaseColor, PorterDuff.Mode.Multiply);
        }
コード例 #7
0
            void DrawOutline(ACanvas canvas, int width, int height, float cornerRadius, float outlineWidth)
            {
                using (var paint = new Paint {
                    AntiAlias = true
                })
                    using (var rect = new RectF(0, 0, width, height))
                    {
                        paint.StrokeWidth = outlineWidth;
                        paint.SetStyle(Paint.Style.Fill);
                        paint.Color = _frame.OutlineColor.ToAndroid();
                        canvas.DrawRoundRect(rect, cornerRadius, cornerRadius, paint);

                        // This will "carve out" the center where our background layer will go. Therefore we maintain the proper background color/transparency.
                        using (var clearXfer = new PorterDuffXfermode(PorterDuff.Mode.Clear))
                        {
                            paint.SetXfermode(clearXfer);
                            rect.Left = outlineWidth; rect.Top = outlineWidth; rect.Right = width - outlineWidth; rect.Bottom = height - outlineWidth;
                            canvas.DrawRoundRect(rect, cornerRadius, cornerRadius, paint);
                        }
                    }
            }
コード例 #8
0
            public void Run()
            {
                start = Convert.ToInt64(DateTime.Now.Subtract(DateTime.Today).TotalMilliseconds);
                Log.Debug("MjpegView", "playback thread started! time:" + start);
                var    mode = new PorterDuffXfermode(PorterDuff.Mode.DstOver);
                Bitmap bm;
                int    width;
                int    height;
                Rect   destRect;
                Canvas c   = null;
                var    p   = new Paint();
                var    fps = "";

                while (mRun)
                {
                    if (surfaceDone)
                    {
                        try
                        {
                            if (false)
                            {
                                Log.Debug("MjpegView", "thread run once++++");
                            }
                            c = mSurfaceHolder.LockCanvas();
                            //synchronized(mSurfaceHolder) {
                            try
                            {
                                if (mIn == null && mInUrl != null)
                                {
                                    mIn = MjpegInputStream.Read(mInUrl);
                                }

                                bm = mIn.ReadMjpegFrame();

                                if (mtakePic)
                                {
                                    Log.Debug("MjpegView", "thread run start to take picture");
                                    var fName = GenerateFileName();
                                    Log.Debug("MjpegView", "mtakePic  " + fName);
                                    var res = SaveBitmapToFile(bm, fName);
                                    BroardCastResult(res, fName);
                                    mFileName = fName;
                                    mtakePic  = false;
                                }
                                destRect = DestRect(mScreenWidth, mScreenHeight);
                                c.DrawColor(Color.Black);
                                c.DrawBitmap(bm, null, destRect, p);
                                if (showFps)
                                {
                                    p.SetXfermode(mode);
                                    if (ovl != null)
                                    {
                                        height = ((ovlPos & 1) == 1)
                                            ? destRect.Top
                                            : destRect.Bottom
                                                 - ovl.Height;
                                        width = ((ovlPos & 8) == 8)
                                            ? destRect.Left
                                            : destRect.Right
                                                - ovl.Width;
                                        c.DrawBitmap(ovl, width, height, null);
                                    }
                                    p.SetXfermode(null);
                                    frameCounter++;
                                    if (Convert.ToInt64(DateTime.Now.Subtract(DateTime.Today).TotalMilliseconds) - start >= 1000)
                                    {
                                        fps          = $"{frameCounter} fps";
                                        frameCounter = 0;
                                        start        = Convert.ToInt64(DateTime.Now.Subtract(DateTime.Today).TotalMilliseconds);
                                        ovl          = MakeFpsOverlay(overlayPaint, fps);
                                    }
                                }
                            }
                            catch (Java.Lang.Exception)
                            {
                            }
                            catch (System.Exception)
                            {
                            }
                            //}
                        }
                        finally
                        {
                            if (c != null)
                            {
                                mSurfaceHolder.UnlockCanvasAndPost(c);
                            }
                        }
                    }
                }
            }