Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Birlikete Resim Kontrolü yapar mıyız! Proje UWP.

Konu, 'C#' kısmında siirsen tarafından paylaşıldı.

  1. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    Birlikte UWP projesi için resim kontrolü yapabilir miyiz, basitinden?
    Ben bir kısmını yaptım, paylaşarak devam etmek istiyorum yaptıklarımı burada.
    Resim kontrolünde dört tane elips olacak.
    Resim dört eşit parçaya ayrıldığı varsayılıp, dört bölgesi içinde hareket edecek her bir elips.
    Her bir elipsin merkezi resim kontrolünde yer alan resmin Point'ini verecek.
    Dört tane elipsin bulunduğu yerden kırpma işlemini gerçekleştirmek istiyorum.

    Kontrolü yaptım.
    Resmin genişliği, yüksekliği, kaplama şekli, kaynağı
    kWidth="150" kHeight="150" Stretch="Uniform" kImageSource="Assets/1.jpg"
    Kontrolün genişliği resmin genişliğinden veya yüksekliği yüksekliğinden fazla olduğu için kenarlarda boş kısımlar oluşuyor.
    Elipsi kontroldeki resim sınırları içinde hareket ettirmeyi başaramadım.
    Bunu yapıp point noktalarını alabilirsem kontrol amacına ulaşmış olacak.
     
  2. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    UWP projesi oluşturun MainPage.xaml sayfasına aşağıdaki kodu yapıştırın.
    Kontrolü çalıştırmak için kod, Assets klasörüne 1.jpg adlı resmi eklemeyi unutmayın:

    Kod:
      
    <local:KontrolResim  HorizontalAlignment="Center" Margin="0,0,0,0"
                                            kImageSource="Assets/1.jpg"
                                            Width="150" Height="150"  kWidth="150" kHeight="150" Stretch="Uniform"                                        
                                />
    
    KontrolResim.xaml adlı bir kontrol sayfası ekleyin yapıştırın.
    Kod:
      
     
        <Grid Height="{Binding kHeight, ElementName=userControl}" Width="{Binding kWidth, ElementName=userControl}" Background="Yellow">
                <Canvas >              
                    <Image x:Name="resResim" 
                       HorizontalAlignment="Center" 
                       VerticalAlignment="Center" 
                       Margin="0,0,0,0" 
                       CacheMode="BitmapCache" 
                       Height="{Binding kHeight, ElementName=userControl}"
                       Width="{Binding kWidth, ElementName=userControl}"
                       Stretch="{Binding Stretch, ElementName=userControl}" 
                       Source="{Binding kImageSource, ElementName=userControl}" 
                        />
                <Thumb x:Name="ElipsSolÜst"    Canvas.Top="20" Canvas.Left="10" Background="Gray" Width="20" Height="20" BorderThickness="4"
                            DragDelta="ElipsSolÜst_DragDelta" PointerMoved="ElipsSolÜst_PointerMoved"  >
                        <Thumb.Template>
                            <ControlTemplate>
                                <Ellipse Fill="Turquoise" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" StrokeThickness="6" >
                   
                                </Ellipse>
                            </ControlTemplate>
                        </Thumb.Template>
                    </Thumb>
                </Canvas>
        </Grid>
    
     
    Son düzenleme: 26 Mart 2017
  3. siirsen

    siirsen Aktif Üye

    Kayıt:
    13 Ağustos 2008
    Mesajlar:
    361
    Beğenilen Mesajlar:
    0
    Bunlarda kodları, ilgili kısımları ayıklayıp yapıştırın.

    Kod:
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using System.Runtime.InteropServices.WindowsRuntime;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.Storage;
    using Windows.Storage.FileProperties;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Media.Imaging;
    using Windows.UI.Xaml.Navigation;
    using Windows.UI.Xaml.Shapes;
    using System.Net;
    using System.Windows;
    namespace LVGVFVResim
    {
        public sealed partial class KontrolResim : UserControl 
        {
            double pX ;
            double pY ;
            public KontrolResim()
            {
                this.InitializeComponent();
                //this.DefaultStyleKey = typeof(KontrolResim);
            }
            #region kImageSource
            public ImageSource kImageSource
            {
                get { return (ImageSource)GetValue(SourceImageProperty); }
                set { SetValue(SourceImageProperty, value); }
            }
            /// <summary>
            /// Resim yolunu bağla <see cref="kImageSource"/> Dependency Property.
            /// </summary>
            public static readonly DependencyProperty SourceImageProperty = DependencyProperty.Register("kImageSource", typeof(ImageSource), typeof(KontrolResim), new PropertyMetadata(null, OnImagePropertyChanged));
            private static void OnImagePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
            {
                var iv = (d as KontrolResim);
                iv.kIsImageLoaded = false;
            }
            /// <summary>
            /// Gets a value indicating whether the high resolution image has loaded.
            /// </summary>
            public bool kIsImageLoaded { get; private set; }
            #endregion
            #region Stretch Height Width
            public Stretch Stretch
            {
                get { return (Stretch)GetValue(StretchProperty); }
                set { SetValue(StretchProperty, value); }
            }
            /// <summary>
            /// Resim Doldurma, Stretch <see cref="Stretch"/> Dependency Property.
            /// </summary>
            public static readonly DependencyProperty StretchProperty = DependencyProperty.Register("Stretch", typeof(Stretch), typeof(KontrolResim), new PropertyMetadata(null));
            public int kHeight
            {
                get { return (int)GetValue(HeightProperty); }
                set { SetValue(HeightProperty, value); }
            }
            /// <summary>
            /// Kontrol Yüksekliği <see cref="kHeight"/> Dependency Property.
            /// </summary>
            public static readonly new DependencyProperty HeightProperty = DependencyProperty.Register("kHeight", typeof(int), typeof(KontrolResim), new PropertyMetadata(null, OnImagePropertyHeight));
            private static void OnImagePropertyHeight(DependencyObject d, DependencyPropertyChangedEventArgs e)
            {
                var iv = (d as KontrolResim);
                iv.resResim.Height = iv.kHeight;
            }
            public int kWidth
            {
                get { return (int)GetValue(WidthProperty); }
                set { SetValue(WidthProperty, value); }
            }
            /// <summary>
            /// Kontrol Genişliği <see cref="kWidth"/> Dependency Property.
            /// </summary>
            public static readonly new DependencyProperty WidthProperty = DependencyProperty.Register("kWidth", typeof(int), typeof(KontrolResim), new PropertyMetadata(null, OnImagePropertyWidth));
            private static void OnImagePropertyWidth(DependencyObject d, DependencyPropertyChangedEventArgs e)
            {
                var iv = (d as KontrolResim);
                iv.resResim.Width = iv.kWidth;
            }
            #endregion
            #region dd
            private void ElipsSolÜst_DragDelta(object sender, DragDeltaEventArgs e)
            {
                if (pX >= 0 && pY >= 0)
                {
                    Canvas.SetTop(ElipsSolÜst, Canvas.GetTop(ElipsSolÜst) + e.VerticalChange);
                    Canvas.SetLeft(ElipsSolÜst, Canvas.GetLeft(ElipsSolÜst) + e.HorizontalChange);
                }
            }
            private void ElipsSolÜst_PointerMoved(object sender, PointerRoutedEventArgs e)
            {
                Windows.UI.Input.PointerPoint pt = e.GetCurrentPoint(this);
                pX = pt.Position.X;
                pY = pt.Position.Y;
            }
            #endregion
            ///// <summary>
            ///// Fired when the full resolution image has successfully loaded.
            ///// </summary>
            //public event EventHandler kImageOpened;
            ///// <summary>
            ///// Fired when the full resolution image failed to load.
            ///// </summary>
            //public event EventHandler kImageFailed;
            //private void ellipse_PMoved(object sender, PointerRoutedEventArgs e)
            //{
            //    ////activated = true;
            //    //Windows.UI.Input.PointerPoint pt = e.GetCurrentPoint(this);
            //    //double pX = pt.Position.X;
            //    //double pY = pt.Position.Y;
            //    //////this.elipsSolÜst.ManipulationMode = ManipulationModes.Scale | ManipulationModes.TranslateX  | ManipulationModes.TranslateY;
            //    ////Point po = new Windows.Foundation.Point();
            //    ////po.X = pX;
            //    ////po.Y = pY;
            //    ////elipsSolÜst.RenderTransform.TransformPoint(po);
            //    ////activated = false; 
            //    //if (isDragging == true  )
            //    //{
            //    //    var transform = elipsSolÜst.RenderTransform as TranslateTransform;
            //    //    if (transform == null)
            //    //    {
            //    //        transform = new TranslateTransform();
            //    //        elipsSolÜst.RenderTransform = transform;
            //    //    }
            //    //    transform.X = pX;
            //    //    transform.Y = pY;
            //    //}
            //    //DragThumb.DragDelta += Mover_DragDelta;
            //}
            //private void ElipsSolÜst_DragEnter(object sender, DragEventArgs e)
            //{
            //    //StorageFile dosya = null;
            //    //ImageProperties res = await dosya.Properties.GetImagePropertiesAsync();
            //    //var yükseklik = res.Height;
            //}
            //private void ElipsSolÜst_PointerMoved(object sender, PointerRoutedEventArgs e)
            //{
            //    Windows.UI.Input.PointerPoint pt = e.GetCurrentPoint(this);
            //    pX = pt.Position.X;
            //    pY = pt.Position.Y;
            //    ////this.elipsSolÜst.ManipulationMode = ManipulationModes.Scale | ManipulationModes.TranslateX  | ManipulationModes.TranslateY;
            //    //Point po = new Windows.Foundation.Point();
            //    //po.X = pX;
            //    //po.Y = pY;
            //    //elipsSolÜst.RenderTransform.TransformPoint(po);
            //}
        }
    }