/// <summary>
        /// Subscriber of the click event of the button SaveCanvas.
        /// </summary>
        /// <param name="sender">Button UIElement</param>
        /// <param name="e">RoutedEventArgument</param>
        void SaveCanvasButton_Click(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
            dlg.DefaultExt       = ".jpg";
            dlg.Filter           = "Images (.jpg)|*.jpg";
            dlg.RestoreDirectory = true;
            Nullable <bool> result = dlg.ShowDialog();

            if (result == true)
            {
                try
                {
                    MainOwner.DoOperationsBeforeSaveCanvas();
                    ImageCanvas.UpdateLayout();

                    RenderTargetBitmap bmp = new RenderTargetBitmap((int)ImageCanvas.ActualWidth,
                                                                    (int)ImageCanvas.ActualHeight, 96, 96, PixelFormats.Default);
                    bmp.Render(ImageCanvas);
                    var encoder = new JpegBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(bmp));
                    using (var stream = File.Create(dlg.FileName))
                    {
                        encoder.Save(stream);
                    }
                }
                catch
                {
                    MessageBox.Show("Error in Saving file.", "Pictionary");
                }
                finally
                {
                    MainOwner.DoOperationsAfterSaveCanvas();
                }
            }
        }
Beispiel #2
0
        private void PopulateUI(Face[] faces)
        {
            if (faces == null || faces.Length <= 0)
            {
                return;
            }

            var face     = faces[0];
            var emotion  = face.FaceAttributes.Emotion;
            var headPose = face.FaceAttributes.HeadPose;

            AgeLabel.Text      = $"Age: {face.FaceAttributes.Age}";
            SmileLabel.Text    = $"Smile: {face.FaceAttributes.Smile}";
            GenderLabel.Text   = $"Gender: {face.FaceAttributes.Gender}";
            GlassesLabel.Text  = $"Am I Wearing Glasses? {face.FaceAttributes.Glasses}";
            HeadPoseLabel.Text = $"HeadPose: Yaw: {headPose.Yaw}, Pitch: {headPose.Pitch}, Roll: {headPose.Roll}";

            var emotionsText = string.Empty;

            emotionsText += $"Anger: {emotion.Anger * 100}%\n";
            emotionsText += $"Fear: {emotion.Fear * 100}%\n";
            emotionsText += $"Happiness: {emotion.Happiness * 100}%\n";
            emotionsText += $"Sadness: {emotion.Sadness * 100}%\n";
            emotionsText += $"Surprise: {emotion.Surprise * 100}%";

            EmotionsLabel.Text = emotionsText;

            _faceRectangle = face.FaceRectangle;

            ImageCanvas.InvalidateSurface();
        }
        public async Task Hide()
        {
            ((App)(App.Current)).BackRequested -= PhotoPreviewView_BackRequested;
            SizeChanged           -= PhotoPreviewView_SizeChanged;
            ImageRoot.SizeChanged -= ImageRoot_SizeChanged;

            IsVisible = false;

            var splitChar = _photo.IsLocal ? '\\' : '/';
            var filename  = (_photo.Uri.Split(splitChar).LastOrDefault()?.Split('.').FirstOrDefault() ?? "");

            var saveInkTask          = Inker.SaveInkToFile($"ink_{filename}.gif");
            var saveThumbnailTask    = InkHelpers.RenderImageWithInkToFileAsync(Inker, await _file.OpenReadAsync(), $"thumb_{filename}.jpg");
            var closingAnimationTask = Root.Scale(1.2f, 1.2f, (float)ActualWidth / 2, (float)ActualHeight / 2).Fade(0).StartAsync();

            await Task.WhenAll(saveInkTask, closingAnimationTask, saveThumbnailTask);

            _photo.InkUri       = saveInkTask.Result ?? _photo.InkUri;
            _photo.ThumbnailUri = saveThumbnailTask.Result ?? _photo.ThumbnailUri;


            Root.Visibility = Visibility.Collapsed;

            _canvasImage.Dispose();
            _canvasImage = null;

            _photo = null;
            _file  = null;

            ImageCanvas.Invalidate();

            FinishedHiding?.Invoke(this, null);

            _tags.Clear();
            _knownFaces.Clear();
            _facePanels.Clear();
            FaceCanvas.Children.Clear();

            if (Description != null)
            {
                Description.Text = "";
            }

            _effectsGenerator = null;

            FiltersButton.IsChecked = false;
            DetailsButton.IsChecked = false;
            InkButton.IsChecked     = false;
            Inker.InkPresenter.StrokeContainer.Clear();

            _photoInfoInitialized = false;

            if (EffectsView != null)
            {
                EffectsView.Visibility = Visibility.Collapsed;
                _effects.Clear();
            }
        }
Beispiel #4
0
    public override void StateChanged(StateManager.State newState)
    {
        switch (newState)
        {
        case StateManager.State.init:
            break;

        case StateManager.State.positioned:
            InfoText.text = "Great!\nNow look straight forward and press your right grip button to calibrate your height.";
            RightGripMarker.SetActive(true);
            break;

        case StateManager.State.calibrated:
            InfoText.text    = "Place your hands inside the marked areas and press your left grip button to Arm / Disarm. When disarmed, move the Nao with the left Touchpad as shown above.";
            StatusText.text  = "Calibrated";
            StatusText.color = Color.green;

            ChangeLayerRecursive(Nao, 0);
            LeftModel.SetMeshRendererState(false);
            RightModel.SetMeshRendererState(false);

            ImageCanvas.SetActive(true);
            RightGripMarker.SetActive(false);
            //LeftGripMarker.SetActive(true);
            RightHandMarker.SetActive(true);
            LeftHandMarker.SetActive(true);
            FloorMarker.SetActive(false);
            break;

        case StateManager.State.disarmed:
            StatusText.text     = "Disarmed";
            StatusText.color    = new Color(1, 0.5f, 0.2f);
            publisher.DoPublish = false;

            RightGripMarker.SetActive(false);
            //LeftGripMarker.SetActive(true);
            RightHandMarker.SetActive(true);
            LeftHandMarker.SetActive(true);
            break;

        case StateManager.State.armed:
            InfoCanvas.SetActive(false);
            StatusText.text     = "Armed";
            StatusText.color    = Color.red;
            publisher.DoPublish = true;

            ImageCanvas.SetActive(false);
            ChangeLayerRecursive(NaoMirror, 0);
            LeftDisplay.SetActive(true);
            RightDisplay.SetActive(true);
            LeftGripMarker.SetActive(false);
            RightHandMarker.SetActive(false);
            LeftHandMarker.SetActive(false);
            break;
        }
    }
        public void Initialize(string folderPath, BackgroundStrippingParams backgroundStrippingParams, Color backgroundColor)
        {
            _folderPath = folderPath;
            _backgroundStrippingParams = backgroundStrippingParams;
            _backgroundColor           = backgroundColor;
            var firstImgPath = GetImageFilesHelper.GetImageFilesFromLocation(folderPath)[0];

            ImageCanvas.SetImage(firstImgPath);
            ClickHelpImage.Source = new BitmapImage(new Uri("ClickInputs/7.png", UriKind.Relative));
        }
        private void Collection_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.AddedItems.Count == 0)
            {
                return;
            }

            _selectedEffectType = (EffectType)e.AddedItems.FirstOrDefault();
            ImageCanvas.Invalidate();
        }
        private void OnMouseDown(object sender, MouseButtonEventArgs e)
        {
            ImageCanvas.RemoveDisplayObject(HorizontalLineName);

            var position = e.GetPosition(ImageCanvas);

            _minPixelsForBaseDisc = (int)(500 - position.Y);

            var leftPosition  = new Point(0, position.Y);
            var rightPosition = new Point(ImageCanvas.Width - 1, position.Y);

            ImageCanvas.GetDashedLineJoiningTwoEdgesOfDisc(leftPosition, rightPosition, HorizontalLineName);
        }
Beispiel #8
0
 /// <summary>
 /// Default constructor
 /// </summary>
 public MainForm()
 {
     InitializeComponent();
     package = new Package();
     patternImageView = new ImageCanvas(this);
     columnProfileView = new ProfileCanvas();
     rowProfileView = new ProfileCanvas();
     panelImage.Controls.Add(patternImageView);
     panelColumnProfile.Controls.Add(columnProfileView);
     panelRowProfile.Controls.Add(rowProfileView);
     MaximumSize = MinimumSize = Size;
     profilesPoint = new Location();
     RefreshAll();
 }
        public FaceView()
        {
            InitializeComponent();

            var vm = (FaceViewModel)BindingContext;

            vm.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == nameof(FaceViewModel.Image) || e.PropertyName == nameof(vm.FaceInfo))
                {
                    ImageCanvas.InvalidateSurface();
                }
            };
        }
        public MainPage()
        {
            InitializeComponent();

            var vm = (MainViewModel)BindingContext;

            vm.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == nameof(MainViewModel.Image) || e.PropertyName == nameof(vm.Predictions))
                {
                    ImageCanvas.InvalidateSurface();
                }
            };
        }
Beispiel #11
0
        private void FileOpenMenu_Click(object sender, EventArgs e)
        {
            var filename = GetFilename();

            if (filename == null)
            {
                return;
            }

            var canvas = new ImageCanvas(XYImage, XZImage, YZImage);
            var app    = new DrawingApp(fileParser, projector, canvas);

            app.Load(filename);
        }
Beispiel #12
0
        public void Dispaly(int count, int width, int height)
        {
            this.Width  = width;
            this.Height = height;
            Canvas      = new Canvas(System.Drawing.Point.Empty, new Size(width, height));
            System.Drawing.SolidBrush brush = new SolidBrush(Color.Red);
            System.Drawing.Font       font  = new System.Drawing.Font("宋体", 22.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));

            if (count < 0 || count > MAXVIDEO_NUM)
            {
                return;
            }
            Image image = Image.FromFile(@"D:\Mixer\SlWClient\SS.WPFClient\Images\bg_module_call.png");

            mapRects.Clear();
            CreateRect(count);
            System.Drawing.Font logFont = new System.Drawing.Font("宋体", 22.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));

            for (int i = 0; i < count; i++)
            {
                if (mapRects[i] != null)
                {
                    Rectangle rect = (Rectangle)mapRects[i];
                    var       vc   = new VideoCanvas(rect.Location, rect.Size, image);
                    monitor[i] = new VideoCanvasPlay(vc);
                    MarqueeCanvas logmarCanvas = new MarqueeCanvas(vc.Location, vc.Size, new Point(20, 30), "_log", logFont, brush, 60, Direction.Down);
                    logmarCanvas.ID = 35;
                    vc.Add(logmarCanvas);
                    vc.Start();
                    vc.ID = i;
                    Canvas.Add(vc);
                }
            }
            TimeCanvas timecanvas = new TimeCanvas(Point.Empty, new Size(100, 100), Point.Empty, "", font, brush, "");

            timecanvas.ID = 29;
            Canvas.Add(timecanvas);
            System.Drawing.Font font1 = new System.Drawing.Font("宋体", 42.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));

            MarqueeCanvas marCanvas = new MarqueeCanvas(new Point(0, height - 200), new Size(width, 200), new Point(100, 40), "你好,欢迎光临视联动力^*^^*^^*^^*^^*^^*^^*^^*^^*^^*^^*^^*^??!!!!!!!!!!!!!!!!!!!!!!!!!!", font1, brush, 40, Direction.Left);

            ImageCanvas imgCanvas = new ImageCanvas(new Point(width - 150, 0), new Size(300, 400), Point.Empty, Image.FromFile(@"D:\VisionVera\视联动力图标.png"));

            imgCanvas.ID = 30;
            Canvas.Add(imgCanvas);

            marCanvas.ID = 31;
            Canvas.Add(marCanvas);
        }
Beispiel #13
0
        public async void Scan(Stream stream, Stream streamRotated)
        {
            /*faccio capire all'animazione che è tempo di andare in scena*/
            Loading.IsVisible = true;

            /*esegui le predictions*/
            await MakePredictionAsync(stream);

            Loading.IsVisible = false;

            /*Bisogna ruotare l'immagine se siamo su iOS*/
            if (Device.RuntimePlatform == Device.iOS)
            {
                skImage = SkiasharpServices.Rotate(streamRotated);
            }
            else if (Device.RuntimePlatform == Device.Android)
            {
                skImage = SKBitmap.Decode(streamDraw);
            }

            /*Pulisco il canvas per disegnarci sopra*/
            ImageCanvas.InvalidateSurface();

            /*Se hai trovato qualcosa allora popola la lista dei tag
             * filtrandola dagli "Other Products"*/
            if (predictionsResult != null)
            {
                var predictionsFiltered = new List <string>();
                foreach (var pred in predictionsResult)
                {
                    if (!pred.TagName.Contains("Products"))
                    {
                        predictionsFiltered.Add(pred.TagName);
                    }
                }
                if (predictionsFiltered.FirstOrDefault() != null)
                {
                    /*ora il bottone per la lista dei risultati deve diventare visibile*/
                    After_scan_btn.IsVisible = true;
                }
                else
                {
                    After_scan_btn.IsVisible = false;
                }
            }
        }
Beispiel #14
0
        private async void MenuOpen_Click(object sender, RoutedEventArgs e)
        {
            var picker = new FileOpenPicker();

            picker.FileTypeFilter.Add(".png");
            StorageFile file = await picker.PickSingleFileAsync();

            if (file != null)
            {
                using (var stream = await file.OpenReadAsync()) {
                    _bitmap = await CanvasVirtualBitmap.LoadAsync(
                        ImageCanvas,
                        stream,
                        CanvasVirtualBitmapOptions.CacheOnDemand);
                }
                _scaleEffect.Source = _bitmap;
                _scaleEffect.Scale  = new Vector2(1, 1);
                ImageCanvas.Width   = _bitmap.Size.Width;
                ImageCanvas.Height  = _bitmap.Size.Height;
                ImageCanvas.Invalidate();
            }
        }
        private void cfsToImage(List <Bitmap> cfgList, List <ImageCanvas> subImgList)
        {
            for (int i = 0; i < subImgList.Count; i++)
            {
                ImageCanvas subImage = subImgList[i];
                var         image    = new Bitmap(subImage.width, subImage.height);
                for (int x = 0; x < subImage.width; x++)
                {
                    for (int y = 0; y < subImage.height; y++)
                    {
                        image.SetPixel(x, y, Color.FromArgb(255, 255, 255));
                    }
                }
                var pixeList = subImage.pixelList;
                foreach (Point point in pixeList)
                {
                    //				System.out.println("(" + (point.X - subImage.left) + "," + (point.Y - subImage.top) + ")");
                    image.SetPixel(point.X - subImage.left, point.Y - subImage.top, Color.FromArgb(0, 0, 0));
                }

                //将切割的中间图片加入到cfgList中
                cfgList.Add(image);
            }
        }
Beispiel #16
0
 private void Page_Unloaded(object sender, RoutedEventArgs e)
 {
     ImageCanvas.RemoveFromVisualTree();
     ImageCanvas = null;
 }
        /**
         * cfs进行分割,返回分割后的数组
         * @param sourceImage
         * @return
         */

        public IList <Bitmap> Execute(Bitmap sourceImage)
        {
            var cfgList = new List <Bitmap>();
            int width   = sourceImage.Width;
            int height  = sourceImage.Height;

            List <ImageCanvas>           subImgList = new List <ImageCanvas>();           //保存子图像
            Dictionary <String, Boolean> trackMap   = new Dictionary <String, Boolean>(); //已经访问过的点

            for (int x = 0; x < width; x++)
            {
                for (int y = 0; y < height; y++)
                {
                    var    rgb = sourceImage.GetPixel(x, y);
                    String key = x + "-" + y;
                    //如果不是黑色,或者已经被访问过,则跳过cfg
                    if (!ColorHelper.isBlack(rgb) || trackMap.ContainsKey(key))
                    {
                        continue;
                    }

                    //如果黑色,且没有访问,则以此点开始进行连通域探索
                    ImageCanvas   subImage = new ImageCanvas();   //保存当前字符块的坐标点
                    Queue <Point> queue    = new Queue <Point>(); //保存当前字符块的访问队列
                    queue.Enqueue(new Point(x, y));
                    trackMap.Add(key, true);
                    subImage.pixelList.Add(new Point(x, y));
                    subImage.left   = x;
                    subImage.top    = y;
                    subImage.right  = x;
                    subImage.bottom = y;

                    while (queue.Count != 0)
                    {
                        Point tmp = queue.Dequeue();

                        //搜寻目标的八个方向
                        int startX = (tmp.X - 1 < 0) ? 0 : tmp.X - 1;
                        int startY = (tmp.Y - 1 < 0) ? 0 : tmp.Y - 1;
                        int endX   = (tmp.X + 1 > width - 1) ? width - 1 : tmp.X + 1;
                        int endY   = (tmp.Y + 1 > height - 1) ? height - 1 : tmp.Y + 1;

                        for (int tx = startX; tx <= endX; tx++)
                        {
                            for (int ty = startY; ty <= endY; ty++)
                            {
                                if (tx == tmp.X && ty == tmp.Y)
                                {
                                    continue;
                                }

                                key = tx + "-" + ty;
                                //System.out.println(key);
                                if (ColorHelper.isBlack(sourceImage.GetPixel(tx, ty)) && !trackMap.ContainsKey(key))
                                {
                                    queue.Enqueue(new Point(tx, ty));
                                    trackMap.Add(key, true);
                                    subImage.pixelList.Add(new Point(tx, ty)); //加入到路径中

                                    //更新边界区域
                                    subImage.left   = Math.Min(subImage.left, tx);
                                    subImage.top    = Math.Min(subImage.top, ty);
                                    subImage.right  = Math.Max(subImage.right, tx);
                                    subImage.bottom = Math.Max(subImage.bottom, ty);
                                }
                            }
                        }
                    }//end of while

                    subImage.width  = subImage.right - subImage.left + 1;
                    subImage.height = subImage.bottom - subImage.top + 1;
                    subImgList.Add(subImage);
                }
            }

            cfsToImage(cfgList, subImgList);
            return(cfgList);
        }
Beispiel #18
0
        public ImageToolsControl(ImageCanvas ic) : base(1, 6, false)
        {
            this.NRows    = 1;
            this.NColumns = 10;
            this.ic       = ic;
            tblButton     = new Table(1, 5, false);

            toolbutton             = new HButtonBox();
            toolbutton.LayoutStyle = ButtonBoxStyle.Start;

            btnShowHideBarier = new ToggleButton();
            btnShowHideBarier.Add(MainClass.Tools.CreatePicLabelWidget("barier-show.png", MainClass.Languages.Translate("show_barier_layer")));
            btnShowHideBarier.Name        = "btnShowHideBarier";
            btnShowHideBarier.Relief      = ReliefStyle.None;
            btnShowHideBarier.CanFocus    = false;
            btnShowHideBarier.BorderWidth = 1;
            //btnShowHideBarier.WidthRequest = 75;
            btnShowHideBarier.TooltipText = MainClass.Languages.Translate("show_barier_layer_tt");
            btnShowHideBarier.Toggled    += delegate(object sender, EventArgs e) {
                this.ic.ShowBarierLayer = btnShowHideBarier.Active;
                SetSensitive(btnShowHideBarier.Active);
            };

            btnEditBarierPoint      = new ToggleButton();
            btnEditBarierPoint.Name = "btnEditBarierPoint";
            btnEditBarierPoint.Add(MainClass.Tools.CreatePicLabelWidget("barier-add.png", MainClass.Languages.Translate("edit_barier_point")));
            btnEditBarierPoint.Relief      = ReliefStyle.None;
            btnEditBarierPoint.CanFocus    = false;
            btnEditBarierPoint.BorderWidth = 1;
            btnEditBarierPoint.TooltipText = MainClass.Languages.Translate("edit_barier_point_tt");
            btnEditBarierPoint.Toggled    += delegate(object sender, EventArgs e) {
                if (btnEditBarierPoint.Active)
                {
                    btnDeleteBarierPoint.Active = false;
                    //btnMovieBarierPoint.Active = false;
                }
            };

            btnDeleteBarierPoint      = new ToggleButton();
            btnDeleteBarierPoint.Name = "btnDeleteBarierPoint";
            btnDeleteBarierPoint.Add(MainClass.Tools.CreatePicLabelWidget("barier-delete.png", MainClass.Languages.Translate("delete_barier_point")));
            btnDeleteBarierPoint.Relief      = ReliefStyle.None;
            btnDeleteBarierPoint.CanFocus    = false;
            btnDeleteBarierPoint.BorderWidth = 1;
            btnDeleteBarierPoint.TooltipText = MainClass.Languages.Translate("delete_barier_point_tt");
            btnDeleteBarierPoint.Toggled    += delegate(object sender, EventArgs e) {
                if (btnDeleteBarierPoint.Active)
                {
                    btnEditBarierPoint.Active = false;
                    //btnAddBarierPoint.Active = false;
                    //btnMovieBarierPoint.Active = false;
                }
            };

            btnDeleteBarier      = new Button();
            btnDeleteBarier.Name = "btnDeleteBarier";
            btnDeleteBarier.Add(MainClass.Tools.CreatePicLabelWidget("barier-delete-all.png", MainClass.Languages.Translate("delete_barier")));
            btnDeleteBarier.Relief      = ReliefStyle.None;
            btnDeleteBarier.CanFocus    = false;
            btnDeleteBarier.BorderWidth = 1;
            btnDeleteBarier.TooltipText = MainClass.Languages.Translate("delete_barier_tt");
            btnDeleteBarier.Clicked    += delegate(object sender, EventArgs e) {
                MessageDialogs md     = new MessageDialogs(MessageDialogs.DialogButtonType.YesNo, "", MainClass.Languages.Translate("delete_barier_question"), Gtk.MessageType.Question);
                int            result = md.ShowDialog();

                if (result != (int)Gtk.ResponseType.Yes)
                {
                    return;
                }

                if (DeleteBarierLayerEvent != null)
                {
                    DeleteBarierLayerEvent(null, null);
                }
            };

            btnShowHideBarier.Active = false;
            //btnAddBarierPoint.Active = false;
            //btnMovieBarierPoint.Active = false;
            btnDeleteBarierPoint.Active = false;
            btnEditBarierPoint.Active   = false;
            SetSensitive(false);


            tblButton.Attach(btnShowHideBarier, 0, 1, 0, 1, AttachOptions.Shrink, AttachOptions.Shrink, 0, 0);
            //tblButton.Attach(btnAddBarierPoint,1,2,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            //tblButton.Attach(btnMovieBarierPoint,2,3,0,1,AttachOptions.Shrink,AttachOptions.Shrink,0,0);
            tblButton.Attach(btnEditBarierPoint, 1, 2, 0, 1, AttachOptions.Shrink, AttachOptions.Shrink, 0, 0);
            tblButton.Attach(btnDeleteBarierPoint, 2, 3, 0, 1, AttachOptions.Shrink, AttachOptions.Shrink, 0, 0);
            tblButton.Attach(btnDeleteBarier, 3, 4, 0, 1, AttachOptions.Shrink, AttachOptions.Shrink, 0, 0);
            tblButton.ShowAll();


            this.Attach(tblButton, 0, 1, 0, 1, AttachOptions.Shrink, AttachOptions.Shrink, 0, 0);
            this.Attach(new HSeparator(), 1, 2, 0, 1, AttachOptions.Shrink, AttachOptions.Shrink, 0, 0);


            Gtk.Button btnZoomIn = new Gtk.Button(new Image("zoom-in.png", IconSize.Button));
            btnZoomIn.TooltipText = MainClass.Languages.Translate("zoom_in");
            btnZoomIn.Relief      = Gtk.ReliefStyle.None;
            btnZoomIn.CanFocus    = false;
            btnZoomIn.Clicked    += delegate {
                ZoomIn();
            };
            //btnZoomIn.WidthRequest = btnZoomIn.HeightRequest = 19;

            Gtk.Button btnZoomOriginal = new Gtk.Button(new Image("zoom-original.png", IconSize.Button));
            btnZoomOriginal.TooltipText = MainClass.Languages.Translate("zoom_original");
            btnZoomOriginal.Relief      = Gtk.ReliefStyle.None;
            btnZoomOriginal.CanFocus    = false;
            btnZoomOriginal.Clicked    += delegate {
                cbeZoom.Active = 11;
            };
            //btnZoomOriginal.WidthRequest = btnZoomOriginal.HeightRequest = 19;

            Gtk.Button btnZoomOut = new Gtk.Button(new Image("zoom-out.png", IconSize.Button));
            btnZoomOut.TooltipText = MainClass.Languages.Translate("zoom_out");
            btnZoomOut.Relief      = Gtk.ReliefStyle.None;
            btnZoomOut.CanFocus    = false;
            btnZoomOut.Clicked    += delegate {
                ZoomOut();
            };
            //btnZoomOut.WidthRequest = btnZoomOut.HeightRequest = 19;

            string[] zoomCollection = new string[] { "3600%", "2400%", "1600%", "1200%", "800%", "700%", "600%", "500%", "400%", "300%", "200%", "100%", "66%", "50%", "33%", "25%", "16%", "12%", "8%", "5%" };
            cbeZoom              = new ComboBoxEntry(zoomCollection);
            cbeZoom.Active       = 11;
            cbeZoom.WidthRequest = 70;
            cbeZoom.Changed     += delegate(object sender, EventArgs e) {
                UpdateScale();
            };

            cbeZoom.Entry.FocusOutEvent += delegate(object o, FocusOutEventArgs args) {
                //Console.WriteLine("FocusOutEvent");
                UpdateScale();
            };

            cbeZoom.Entry.FocusInEvent += delegate(object o, FocusInEventArgs args) {
            };
            cbeZoom.Entry.Changed      += delegate(object sender, EventArgs e) {
                //UpdateScale();
            };

            this.Attach(btnZoomOut, 2, 3, 0, 1, AttachOptions.Shrink, AttachOptions.Shrink, 0, 0);
            this.Attach(cbeZoom, 3, 4, 0, 1, AttachOptions.Shrink, AttachOptions.Shrink, 0, 0);
            this.Attach(btnZoomIn, 4, 5, 0, 1, AttachOptions.Shrink, AttachOptions.Shrink, 0, 0);
            this.Attach(btnZoomOriginal, 5, 6, 0, 1, AttachOptions.Shrink, AttachOptions.Shrink, 0, 0);
            //this.PackEnd(cbeZoom,false,false,1);
        }
        public async Task ShowAsync(PhotoData photo)
        {
            if (photo == null || photo.Uri == null)
            {
                return;
            }

            Root.Opacity    = 0;
            Root.Visibility = Visibility.Visible;

            LoadingScreen.Opacity          = 1;
            LoadingScreen.IsHitTestVisible = true;
            ProgressRing.IsActive          = true;

            await Root.Scale(1.2f, 1.2f, (float)ActualWidth / 2, (float)ActualHeight / 2, 0).Then()
            .Fade(1).Scale(1, 1, (float)ActualWidth / 2, (float)ActualHeight / 2).StartAsync();

            _photo = photo;
            var uri = new Uri(photo.Uri);

            if (uri.IsFile)
            {
                _file = await StorageFile.GetFileFromPathAsync(photo.Uri);
            }
            else
            {
                _file = await StorageFile.CreateStreamedFileFromUriAsync("photo.jpg", uri, null);
            }

            if (_file == null)
            {
                Hide();
                return;
            }

            var stream = await _file.OpenReadAsync();

            _canvasImage = await CanvasBitmap.LoadAsync(ImageCanvas, stream);

            var imgBounds = _canvasImage.GetBounds(ImageCanvas);

            //var size = Math.Min(imgBounds.Height, imgBounds.Width);

            ImageCanvas.Height = 1200;
            ImageCanvas.Width  = 950;

            _selectedEffectType = EffectType.none;
            ImageCanvas.Invalidate();

            if (_photo.InkUri != null)
            {
                Inker.LoadInkFromFile(_photo.InkUri);
            }

            if (App.IsXbox())
            {
                DetailsButton.Focus(FocusState.Keyboard);
            }

            SetCanvasSize();

            SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
            ((App)(App.Current)).BackRequested += PhotoPreviewView_BackRequested;

            SizeChanged           += PhotoPreviewView_SizeChanged;
            ImageRoot.SizeChanged += ImageRoot_SizeChanged;
            SetCanvasSize();

            LoadingScreen.Fade(0, 300).Start();
            ProgressRing.IsActive          = false;
            LoadingScreen.IsHitTestVisible = false;

            FinishedShowing?.Invoke(this, null);

            IsVisible = true;

            AnalyzeFaces();
        }
Beispiel #20
0
        public ImageEditor(string filePath)
        {
            fileName = filePath;

            fileBarierName = fileName + ".mso";
            if (System.IO.File.Exists(fileBarierName))
            {
                string barierFile;
                try {
                    using (StreamReader file = new StreamReader(fileBarierName)) {
                        barierFile = file.ReadToEnd();
                        file.Close();
                        file.Dispose();
                    }
                    if (!string.IsNullOrEmpty(barierFile))
                    {
                        //listPoint =  JsonConvert.DeserializeObject<List<BarierPoint>>(barierFile);
                        System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
                        jss.RegisterConverters(new[] { new BarierPointJavaScriptConverter() });
                        listPoint = jss.Deserialize <List <BarierPoint> >(barierFile);
                    }
                } catch (Exception ex) {
                    MessageDialogs ms = new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("file_cannot_open", fileBarierName), ex.Message, Gtk.MessageType.Error, null);
                    ms.ShowDialog();
                }
            }


            editorAction = new Gtk.ActionGroup("imageeditor");

            //ic = new ImageCanvas(filePath,listPoint);
            ic = new ImageCanvas(filePath, listPoint)
            {
                Name       = "canvas",
                CanDefault = true,
                CanFocus   = true,
                Events     = (Gdk.EventMask) 16134
            };

            vbox = new Gtk.VBox();

            /*Gdk.Color col = new Gdk.Color(255,255,0);
             * vbox.ModifyBg(StateType.Normal, col);*/

            itc = new ImageToolBarControl(ic);             //new ImageToolBarControl(ic);
            itc.DeleteBarierLayerEvent += delegate(object sender, EventArgs e) {
                if (System.IO.File.Exists(fileBarierName))
                {
                    try{
                        System.IO.File.Delete(fileBarierName);
                        OnModifiedChanged(false);
                        ic.DeleteBarier();
                    }catch (Exception ex) {
                        MessageDialogs mdd =
                            new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("cannot_delete_file", fileBarierName), ex.Message, Gtk.MessageType.Error);
                        mdd.ShowDialog();
                    }
                }
                else
                {
                    ic.DeleteBarier();
                }
            };

            vbox.PackStart(itc, false, false, 0);

            ScrolledWindow sw = new Gtk.ScrolledWindow();

            sw.ShadowType = Gtk.ShadowType.Out;

            sw.Hadjustment.ValueChanged += delegate(object sender, EventArgs e) {
                //Console.WriteLine("sw.Hadjustment -> {0}",sw.Hadjustment.Value);
            };

            sw.Vadjustment.ValueChanged += delegate(object sender, EventArgs e) {
                //Console.WriteLine("sw.Vadjustment -> {0}",sw.Vadjustment.Value);
            };

            Viewport vp = new Viewport()
            {
                ShadowType = ShadowType.None
            };

            vp.ScrollEvent += delegate(object o, ScrollEventArgs args) {
                if (args.Event.State == ModifierType.ControlMask)
                {
                    switch (args.Event.Direction)
                    {
                    case ScrollDirection.Down:
                    case ScrollDirection.Right:
                        itc.ZoomOut();
                        return;

                    case ScrollDirection.Left:
                    case ScrollDirection.Up:
                        itc.ZoomIn();
                        return;
                    }
                }
            };

            vp.MotionNotifyEvent += delegate(object o, MotionNotifyEventArgs args) {
                Cairo.PointD offset = new Cairo.PointD(sw.Hadjustment.Value, sw.Vadjustment.Value);
                int          x      = (int)args.Event.X;
                int          y      = (int)args.Event.Y;
                if (ic.ConvertPointToCanvasPoint(offset, ref x, ref y))
                {
                    OnWriteToStatusbar(String.Format(statusFormat, x, y, ic.WidthImage, ic.HeightImage));
                }

                if (itc.ToolState == ImageToolBarControl.ToolStateEnum.nothing)
                {
                    return;
                }

                if (itc.ToolState == ImageToolBarControl.ToolStateEnum.editpoint)
                {
                    ic.StepMovingPoint((int)args.Event.X, (int)args.Event.Y, offset);
                    //OnModifiedChanged(true);
                }
            };

            vp.ButtonReleaseEvent += delegate(object o, ButtonReleaseEventArgs args) {
                //Console.WriteLine("1_ButtonReleaseEvent");
                if (args.Event.Button != 1)
                {
                    return;
                }

                if (itc.ToolState == ImageToolBarControl.ToolStateEnum.nothing)
                {
                    return;
                }
                Cairo.PointD offset = new Cairo.PointD(sw.Hadjustment.Value, sw.Vadjustment.Value);

                if (itc.ToolState == ImageToolBarControl.ToolStateEnum.editpoint)
                {
                    ic.EndMovingPoint((int)args.Event.X, (int)args.Event.Y, offset);
                    OnModifiedChanged(true);
                }
            };

            vp.ButtonPressEvent += delegate(object o, ButtonPressEventArgs args) {
                if (args.Event.Button != 1)
                {
                    return;
                }

                if (itc.ToolState == ImageToolBarControl.ToolStateEnum.nothing)
                {
                    return;
                }

                Cairo.PointD offset = new Cairo.PointD(sw.Hadjustment.Value, sw.Vadjustment.Value);
                if (itc.ToolState == ImageToolBarControl.ToolStateEnum.addpoint)
                {
                    ic.AddPoint((int)args.Event.X, (int)args.Event.Y, offset);
                    OnModifiedChanged(true);
                }
                else if (itc.ToolState == ImageToolBarControl.ToolStateEnum.deletepoint)
                {
                    ic.DeletePoint((int)args.Event.X, (int)args.Event.Y, offset);
                    OnModifiedChanged(true);
                }
                else if (itc.ToolState == ImageToolBarControl.ToolStateEnum.moviepoint)
                {
                    ic.StartMovingPoint((int)args.Event.X, (int)args.Event.Y, offset);
                    OnModifiedChanged(true);
                }
                else if (itc.ToolState == ImageToolBarControl.ToolStateEnum.editpoint)
                {
                    if (args.Event.State == ModifierType.ShiftMask)
                    {
                        ic.DeletePoint((int)args.Event.X, (int)args.Event.Y, offset);
                        OnModifiedChanged(true);
                        return;
                    }
                    ic.EditPoint((int)args.Event.X, (int)args.Event.Y, offset);
                    OnModifiedChanged(true);
                }
            };


            sw.Add(vp);
            vp.Add(ic);

            vbox.PackEnd(sw, true, true, 0);
            ic.Show();
            vp.Show();

            vbox.ShowAll();
        }
Beispiel #21
0
        public ImageToolBarControl(ImageCanvas ic)
        {
            this.ic                 = ic;
            btnShowHideBarier       = new ToggleToolButton("barier-show.png");      //RadioToolButton(group1);//,"barier-show.png");
            btnShowHideBarier.Label = MainClass.Languages.Translate("show_barier_layer");
            btnShowHideBarier.Name  = "btnShowHideBarier";
            //btnShowHideBarier.Relief = ReliefStyle.None;
            btnShowHideBarier.CanFocus    = false;
            btnShowHideBarier.BorderWidth = 1;
            //btnShowHideBarier.WidthRequest = 75;
            btnShowHideBarier.TooltipText = MainClass.Languages.Translate("show_barier_layer_tt");

            btnShowHideBarier.Events   = Gdk.EventMask.AllEventsMask;          // | EventMask.ButtonReleaseMask | EventMask.PointerMotionMask
            btnShowHideBarier.Toggled += delegate(object sender, EventArgs e) {
                this.ic.ShowBarierLayer = btnShowHideBarier.Active;
                SetSensitive(btnShowHideBarier.Active);
                //Console.WriteLine("btnShowHideBarier.Toggled");
            };

            btnEditBarierPoint       = new ToggleToolButton("barier-add.png");       //new RadioToolButton(group2,"barier-add.png");
            btnEditBarierPoint.Name  = "btnEditBarierPoint";
            btnEditBarierPoint.Label = MainClass.Languages.Translate("edit_barier_point");
            //btnEditBarierPoint.Relief = ReliefStyle.None;
            btnEditBarierPoint.CanFocus    = false;
            btnEditBarierPoint.BorderWidth = 1;
            btnEditBarierPoint.TooltipText = MainClass.Languages.Translate("edit_barier_point_tt");
            btnEditBarierPoint.Toggled    += delegate(object sender, EventArgs e) {
                if (btnEditBarierPoint.Active)
                {
                    btnDeleteBarierPoint.Active = false;
                    //btnMovieBarierPoint.Active = false;
                }
            };

            btnDeleteBarierPoint       = new ToggleToolButton("barier-delete.png");      //new RadioToolButton(group2,"barier-delete.png");
            btnDeleteBarierPoint.Name  = "btnDeleteBarierPoint";
            btnDeleteBarierPoint.Label = MainClass.Languages.Translate("delete_barier_point");
            //btnDeleteBarierPoint.Relief = ReliefStyle.None;
            btnDeleteBarierPoint.CanFocus    = false;
            btnDeleteBarierPoint.BorderWidth = 1;
            btnDeleteBarierPoint.TooltipText = MainClass.Languages.Translate("delete_barier_point_tt");
            btnDeleteBarierPoint.Toggled    += delegate(object sender, EventArgs e) {
                if (btnDeleteBarierPoint.Active)
                {
                    btnEditBarierPoint.Active = false;
                    //btnAddBarierPoint.Active = false;
                    //btnMovieBarierPoint.Active = false;
                }
            };

            btnDeleteBarier      = new ToolButton("barier-delete-all.png");
            btnDeleteBarier.Name = "btnDeleteBarier";

            btnDeleteBarier.Label       = MainClass.Languages.Translate("delete_barier");
            btnDeleteBarier.CanFocus    = false;
            btnDeleteBarier.BorderWidth = 1;
            btnDeleteBarier.TooltipText = MainClass.Languages.Translate("delete_barier_tt");
            btnDeleteBarier.Clicked    += delegate(object sender, EventArgs e) {
                MessageDialogs md     = new MessageDialogs(MessageDialogs.DialogButtonType.YesNo, "", MainClass.Languages.Translate("delete_barier_question"), Gtk.MessageType.Question);
                int            result = md.ShowDialog();

                if (result != (int)Gtk.ResponseType.Yes)
                {
                    return;
                }

                if (DeleteBarierLayerEvent != null)
                {
                    DeleteBarierLayerEvent(null, null);
                }
            };

            SetSensitive(false);

            this.Insert(btnShowHideBarier, 0);

            this.Insert(btnEditBarierPoint, 1);
            this.Insert(btnDeleteBarierPoint, 2);
            this.Insert(btnDeleteBarier, 3);

            Gtk.ToolButton btnZoomIn = new Gtk.ToolButton("zoom-in.png");
            btnZoomIn.Label       = MainClass.Languages.Translate("zoom_in");
            btnZoomIn.TooltipText = MainClass.Languages.Translate("zoom_in");
            //btnZoomIn.Relief = Gtk.ReliefStyle.None;
            btnZoomIn.CanFocus = false;
            btnZoomIn.Clicked += delegate {
                ZoomIn();
            };

            Gtk.ToolButton btnZoomOriginal = new Gtk.ToolButton("zoom-original.png");
            btnZoomOriginal.Label       = MainClass.Languages.Translate("zoom_original");
            btnZoomOriginal.TooltipText = MainClass.Languages.Translate("zoom_original");
            //btnZoomOriginal.Relief = Gtk.ReliefStyle.None;
            btnZoomOriginal.CanFocus = false;
            btnZoomOriginal.Clicked += delegate {
                cbeZoom.Active = 11;
            };
            //btnZoomOriginal.WidthRequest = btnZoomOriginal.HeightRequest = 19;

            Gtk.ToolButton btnZoomOut = new Gtk.ToolButton("zoom-out.png");
            btnZoomOut.TooltipText = MainClass.Languages.Translate("zoom_out");
            btnZoomOut.Label       = MainClass.Languages.Translate("zoom_out");
            //btnZoomOut.Relief = Gtk.ReliefStyle.None;
            btnZoomOut.CanFocus = false;
            btnZoomOut.Clicked += delegate {
                ZoomOut();
            };

            string[] zoomCollection = new string[] { "3600%", "2400%", "1600%", "1200%", "800%", "700%", "600%", "500%", "400%", "300%", "200%", "100%", "66%", "50%", "33%", "25%", "16%", "12%", "8%", "5%" };
            cbeZoom              = new ComboBoxEntry(zoomCollection);
            cbeZoom.Active       = 11;
            cbeZoom.WidthRequest = 70;
            cbeZoom.Changed     += delegate(object sender, EventArgs e) {
                UpdateScale();
            };

            cbeZoom.Entry.FocusOutEvent += delegate(object o, FocusOutEventArgs args) {
                //Console.WriteLine("FocusOutEvent");
                UpdateScale();
            };

            cbeZoom.Entry.FocusInEvent += delegate(object o, FocusInEventArgs args) {
            };
            cbeZoom.Entry.Changed      += delegate(object sender, EventArgs e) {
                //UpdateScale();
            };

            ToolItem tic = new ToolItem();

            tic.Add(cbeZoom);

            this.Insert(new SeparatorToolItem(), 4);
            this.Insert(btnZoomIn, 5);
            this.Insert(btnZoomOut, 6);
            this.Insert(tic, 7);
            this.Insert(btnZoomOriginal, 8);
        }
Beispiel #22
0
 private void ZoomOut_Click(object sender, RoutedEventArgs e)
 {
     _scaleEffect.Scale = Vector2.Divide(_scaleEffect.Scale, DefaultZoomFactor);
     ZoomUpdated();
     ImageCanvas.Invalidate();
 }