ورود

View Full Version : 2. روش ارسال عکس به UserControl



MMRavari
جمعه 23 خرداد 1399, 06:15 صبح
با سلام
من در برنامه خودم یک یوزر کنترل ایجاد کردم که لازمه عکس به او ارسال بشه
میخواستم روش ارسال رو یاد بگیرم
ممنون

SajjadKhati
جمعه 23 خرداد 1399, 08:09 صبح
سلام
منظورتون را دقیقا متوجه نمیشم .
ضمنا ، wpf ، سیستم بسیار قدرتمندی برای ساخت style و template داره . بسیار کم پیش میاد که نشه کنترل دلخواهی که مد نظرمون هست را با style و template پیاده سازی کرد .
اگه از user control استفاده کنید ، دیگه نمیتونید از template استفاده کنید .


با این حال ، منظورتون از ارسال عکس را متوجه نمیشم . اگه نیاز به تصویر دارید ، خوب در این user control تون ، پروپرتی ای (یا هر عضو دیگه ای که لازم دارید) از نوع ImageSource تعریف کنید و اگه مثلا فرمت تصویرتون از نوع فرمت عکس (مثل png و jpg و ...) هست ، مقدار اون پروپرتی را شی ای از نوع BitmapImage در نظر بگیرید (و پروپرتی UriSource از شی BitmapImage را مقداردهی کنید) .

MMRavari
جمعه 23 خرداد 1399, 11:24 صبح
ممنون از پاسختون
من برای کار خاصی از UserControl استفاده میکنم
اون کنترل من شامل یک Rectangle برای پیرامونه و یک سری تکست باکس و ایمیج
چون از این شکل در بیشتر فرمهام باید استفاده کنم اومدم اون رو بصورت UserControl تعریف کردم

برای تکس باکسها بصورت زیر عمل میکنم


public string GropShow1
{
get { return lbl2.Content.ToString(); }
set { lbl2.Content = value; }
}

اما برای ایمیج نمیدونم چطوری باید پیاده سازی کنم
مرسی

SajjadKhati
جمعه 23 خرداد 1399, 13:43 عصر
ممنون از پاسختون
من برای کار خاصی از UserControl استفاده میکنم
اون کنترل من شامل یک Rectangle برای پیرامونه و یک سری تکست باکس و ایمیج
چون از این شکل در بیشتر فرمهام باید استفاده کنم اومدم اون رو بصورت UserControl تعریف کردم


سلامی مجدد
خوب چرا برای این کار ، یه user control میسازید؟
برای این کار میتونید یه panel (مثل کنترل Grid) تعریف کنید و این کنترل هایی که نام بردید (Rectangle و TextBox ها و Image) و هر کنترل دیگه ای را داخلش بذارید .
این Grid را هم میتونید در Resource در پروژه تون تعریف کنید تا در هر فرم دیگه ای در دسترس تون باشه تا در اون فرم ها هم بتونید از این Grid استفاده کنید .



برای تکس باکسها بصورت زیر عمل میکنم
اما برای ایمیج نمیدونم چطوری باید پیاده سازی کنم
مرسی




اگه از کنترل Image استفاده میکنید ، مقدار پروپرتی ImageSource ، مشخص کننده ی منبع اون Image هست که میتونید ازش استفاده کنید .

MMRavari
شنبه 24 خرداد 1399, 02:37 صبح
ممنون دوست عزیز
برای روش اولی که فرمودین مکنه یک مثال بزنین
برای image هم من در قسمت get چی باید بنویسم


public Image image1
{
get { return ; }
set { img2.Source = value.Source; }
}


ممنون

SajjadKhati
شنبه 24 خرداد 1399, 11:30 صبح
ممنون دوست عزیز
برای روش اولی که فرمودین مکنه یک مثال بزنین


ممنون



خواهش میکنم .
در فایل App.Xaml ، کد زیر را به قسمت ResourceDictionary ، اضافه کنید :



<Grid x:Key="overalControl">
<Border BorderBrush="Red" BorderThickness="2">
<Canvas>
<TextBox HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
<Image Canvas.Left="150" Width="200" Source="11.jpg"/>
</Canvas>
</Border>
</Grid>


در کد بالا ، پروپرتیِ Source ئه مربوط به کنترل Image را ، منبع Image یا آدرس منبع فایل مورد نظر خودتون را بدین (البته میتونین کنترل Grid را از کد بالا حذف کنید که در این صورت ، مقدار x:Key="overalControl" را باید به اون Border اختصاص بدین) .
کلا در این فایل ، بصورت پیش فرض ، کد بخش <ResourceDictionary> تون بصورت زیر باید بشه :



<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Simple Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>


<Grid x:Key="overalControl">
<Border BorderBrush="Red" BorderThickness="2">
<Canvas>
<TextBox HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
<Image Canvas.Left="150" Width="200" Source="11.jpg"/>
</Canvas>
</Border>
</Grid>


</ResourceDictionary>


پروپرتیِ Source ئه مربوط به کنترل Image را که توضیح دادم .
بعد هم در هر فرم (در واقع window ای) میتونین ازش استفاده کنید :



<Grid>
<ContentControl Content="{StaticResource overalControl}"/>
</Grid>


کد کلیِ بالا :



<Window x:Class="WPF_Practice.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF_Practice"
mc:Ignorable="d"
Title="Window2" Height="450" Width="800">




<Grid>
<ContentControl Content="{StaticResource overalControl}"/>
</Grid>
</Window>