View Full Version : عدم نمایش عکس در کنترل Image بعد از دادن رنگ به زمینه Rectangle
zeous1
جمعه 29 اردیبهشت 1391, 13:59 عصر
سلام
من دارم یه برنامه شبیه تقویم مینویسم به یه مشکل برخوردم نمیدونم چطور حلش کنم
فرم کلی برنامه رو توی windows.xaml درست کردم و یه سری تنظیمات رنگ و نوشته رو توی App.xaml انجام دادم، حالا میخوام توی یه سری از فیلدهای جدولم عکسهایی که تو پایگاه داده ذخیره کردم نمایش بدم
تونستم این کارو انجام بدم ولی با حذف fill توی app.xaml ، یعنی سمبل کاری کردم
حالا میخوام بدون حذف fill که مربع هام رو رنگ میکنه این کارو انجام بدم و عکس رو نمایش بدم به کاربر
مشکلم اینه که عکس رو میارم ولی انگار fill اونو دوباره رنگ میکنه و عکس رو میپوشونه
لطفا کمممممممممممممممممممممممک م کنییییییید
zeous1
جمعه 29 اردیبهشت 1391, 17:29 عصر
دوستانی که وارد هستند خواهش میکنم منو راهنمایی کنن
مشکل اصلی دیده نشدن عکسه! یعنی عکس رو از پایگاه داده میتونم بخونم و بیارم ولی این fill که قبلنم گفتم روی عکس رو با رنگی که براش تعریف کردم میپوشونه
خودم از خاصیت background توی windows.xaml برای رنگ کردن مربع استفاده کردم و تونستم عکس رو نمایش بدم، ولی اگه این روش رو به کار ببرم جای دیگه مشکل پیدا میکنم!
مهدی فرزاد
شنبه 30 اردیبهشت 1391, 14:31 عصر
سلام
باور کنید من یکی که نفهمیدم داستان از چه قراراه ؟
میتونید برنامه رو پیوست کنید ؟؟ یا واضح تر توضیح بدید
zeous1
یک شنبه 31 اردیبهشت 1391, 20:16 عصر
من برای تعریف مربع توی windows.xaml این دستورو نوشتم :
<{"Grid x:Name="GridJome" Style="{DynamicResource GridStyle>
<Image Name="imageJome" Width="143" Height="80"></Image>
<Rectangle x:Name="RectangleJome" Style="{DynamicResource RectangleStyleForHolydays}" />
</Grid>
و توی App.xaml تنظیماتشو اینجوری انجام دادم :
<Style x:Key="RectangleStyleForHolydays" TargetType="{x:Type Rectangle}">
<Setter Property="Fill" Value="#FFF9BBBB"/>
</Style>
در این حالت دستور fill مربع من رو به رنگ قرمز در میاره، حالا به طور مثال من میخوام برای همین روز عکسی که در پایگاه داده ام ذخیره است رو در همین مربع نمایش بدم، دستور بازیابی عکس از پایگاه داده رو هم اینطور نوشتم و در برنامه ی دیگه ام تست کردم و جواب گرفتم :
Person person = null;
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("Data Source= YOUSSEFI-
FDABEA;Initial Catalog=StoreImageDB;Integrated Security=True");
System.Data.SqlClient.SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT id, name, photo FROM picture_Table WHERE ID = '4'";
conn.Open();
System.Data.SqlClient.SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
person = new Person();
person.ID = dr.GetInt32(0);
person.Name = dr.GetString(1);
person.photo = dr.GetValue(2) as byte[];
}
else
{
MessageBox.Show("Haven't find the id in sql server");
}
conn.Close();
if (person != null)
{
#region read the image from a bytes array
System.IO.MemoryStream ms = new System.IO.MemoryStream(person.photo);
ms.Seek(0, System.IO.SeekOrigin.Begin);
BitmapImage newBitmapImage = new BitmapImage();
newBitmapImage.BeginInit();
newBitmapImage.StreamSource = ms;
newBitmapImage.EndInit();
ImageJome0.Source = newBitmapImage;
#endregion
}
عکس رو از پایگاه داده ام میخونه و نمایش میده تنها مشکلی که هست اینه که انگار دستور fill که در بالا قرار دادم دوباره روی عکس رو با رنگ قرمز پر میکنه و عکس رو میپوشونه و فکر میکنم این مشکلم از پویایی دستور fill نشات میگیره، اگه اینطوره دستوره جایگزینی براش هست یا میشه از حالت پویایی خارجش کرد که فقط یه بار اونم توی ابتدای برنامه مربع رو رنگ کنه!!!!
مهدی فرزاد
یک شنبه 31 اردیبهشت 1391, 22:54 عصر
شما در کد Xaml جای Image رو با Rectangle عوض کنید یعنی Rectangle رو بیارید بالاتر از Image
<{"Grid x:Name="GridJome" Style="{DynamicResource GridStyle>
<Rectangle x:Name="RectangleJome" Style="{DynamicResource RectangleStyleForHolydays}" />
<Image Name="imageJome" Width="143" Height="80"></Image>
</Grid>
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.