Всем привет! На просторах интернета мало информации о применении статических и динамического использования ресурсов, особенное примеров с Image. Однако StaticResource и DynamicResource достаточно просто использовать, а самое главное, это очень сильно сокращает код, так как основная логика происходящего на загрузку и использования находится в Xaml разметке. Один раз подключив ресурсы к компоненту, мы можем менять […]
Рубрика: WPF
Как двигать окном если ее форма не стандартная? C#
Всем привет! Бывает при разработке программы, мы можем создать не стандартную форму приложения, или отключить границы окна. В таком случаи у нас загрузиться программа но мы не сможем ее двигать. Для того что бы создать форму в качестве картинки вам нужно использовать изображение в Background или если у вас геометрическая фигура в виде формы тогда […]
Как сохранить позицию окна формы и ее размер? C#
Всем привет! Думаю вы видели приложения в которые запоминают свою позицию и размер своего окна, и при следующем запуске программы восстанавливают их. Сегодня рассмотрим такой пример, как можно реализовать в своем проекте такую функцию. Первым дело создадим проект, я буду приводить пример для WPF на C#. Но не большая корректировка кода и можно будет использовать […]
Как преобразовать BitmapImage из Bitmap и обратно?
Всем привет, покажу не сколько примеров того как можно привести тип Bitmap к BitmapImage и на оборот. Преобразовать из BitmapImage в Bitmap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
private Bitmap FromBitmapImagetoBitmap(BitmapImage bitmapImage) { // BitmapImage bitmapImage = new BitmapImage(new Uri("../Images/test.png", UriKind.Relative)); using(MemoryStream outStream = new MemoryStream()) { BitmapEncoder enc = new BmpBitmapEncoder(); enc.Frames.Add(BitmapFrame.Create(bitmapImage)); enc.Save(outStream); System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(outStream); return new Bitmap(bitmap); } } |
Преобразовать из Bitmap в BitmapImage
1 2 3 4 5 6 7 8 9 |
private BitmapImage BitmapToBitmapImage(Bitmap bitmap) { BitmapSource i = Imaging.CreateBitmapSourceFromHBitmap( bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); return (BitmapImage)i; } |
Альтернативный вариант
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[System.Runtime.InteropServices.DllImport("gdi32.dll")] public static extern bool DeleteObject(IntPtr hObject); private BitmapImage BitmapToBitmapImage(Bitmap bitmap) { IntPtr hBitmap = bitmap.GetHbitmap(); BitmapImage retval; try { retval = (BitmapImage)Imaging.CreateBitmapSourceFromHBitmap( hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); } finally { DeleteObject(hBitmap); } return retval; } |
Альтернативный вариант
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public static BitmapImage BitmapToBitmapImage(this Bitmap bitmap) { using (var memory = new MemoryStream()) { bitmap.Save(memory, ImageFormat.Png); memory.Position = 0; var bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = memory; bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.EndInit(); bitmapImage.Freeze(); return bitmapImage; } } |
Как изменить цвет фона Background C# WPF
Всем привет! Сегодня я покажу как можно изменить цвет фона контрола со свойством Background в WPF. Продемонстрирую два примера. Изменения цвета фона RGB
1 |
btn1.Background = new SolidColorBrush(Color.FromRgb(255,255,255)); |
Изменения цвета фона Hex
1 |
btn1.Background = (SolidColorBrush)new BrushConverter().ConvertFromString("#3CACDC"); |
Таким образом мы изменили цвет фона кнопки двумя способами.