Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
10 / 10 / 1
Регистрация: 27.02.2009
Сообщений: 94
.NET 3.x

плавный переход одного изображения в другое

28.08.2010, 12:12. Показов 2976. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, помогите организовать плавный переход от одного изображения в PictureBox в другое, с условием, что все исходные изображения будут храниться в ImageList. Имеется такой код, где рисуется изображение на форме на основе исходных в ImageList:


VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Imports System.Drawing.Drawing2D
Imports System.Drawing.Imaging
 
 
Public Class Form1
    'Уровень прозрачности
    Private transparent As Single = 0.1F
    'Шаг изменения прозрачности
    Private trStep As Single = 0.1F
    'Массив матрицы цветов
    Private apts(,) As Single = {{1.0F, 0.0F, 0.0F, 0.0F, 0.0F}, _
                                 {0.0F, 1.0F, 0.0F, 0.0F, 0.0F}, _
                                 {0.0F, 0.0F, 1.0F, 0.0F, 0.0F}, _
                                 {0.0F, 0.0F, 0.0F, transparent, 0.0F}, _
                                 {0.0F, 0.0F, 0.0F, 0.0F, 1.0F}}
    Private backImg As Image
    Private frontImg As Image
 
    Private cm As New ColorMatrix
    Private ia As New ImageAttributes
    Private r As New Rectangle
    Private rnd As New Random
 
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        DrawFX(e, transparent)
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Для уменьшения мерцания формы
        MyClass.SetStyle(ControlStyles.UserPaint, True)
        MyClass.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
        MyClass.SetStyle(ControlStyles.DoubleBuffer, True)
 
        backImg = ImageList1.Images.Item(0)
        frontImg = ImageList1.Images.Item(1)
        r = New Rectangle(0, 0, MyClass.ClientSize.Width, _
        ClientSize.Height)
 
        Dim i, j As Integer
        For i = 0 To 4
            For j = 0 To 4
                cm.Item(i, j) = apts(i, j)
            Next
        Next
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If transparent < 0 Or transparent > 1 Then
            trStep *= -1
            cm.Matrix01 = Convert.ToSingle(rnd.NextDouble)
            cm.Matrix12 = Convert.ToSingle(rnd.NextDouble)
            cm.Matrix23 = Convert.ToSingle(rnd.NextDouble)
        End If
        transparent += trStep
        cm.Matrix33 = transparent
        Refresh()
    End Sub
 
    Private Sub DrawFX(ByVal e As PaintEventArgs, ByVal trsp As Single)
        Dim g As Graphics = e.Graphics
        g.DrawImage(backImg, r)
        ia.SetColorMatrix(cm)
        g.DrawImage(frontImg, r, 0, 0, _
                    frontImg.Width, frontImg.Height, _
                    GraphicsUnit.Pixel, ia)
    End Sub
End Class
Кто-нибудь сумеет организовать плавную смену изображений по представленному принципу, причем рисовать результат уже не на форме, а в PictureBox по событиям мыши:
PictureBox1_MouseMove
PictureBox1_MouseDown
PictureBox1_MouseLeave
всего три изображения, которые хранятся в ImageList (Обсуждалось в этой теме)

Осуществляемый принцип хочу использовать в кнопках на форме в виде PictureBox, изображения которых плавно меняются по событиям мыши, как например кнопка Пуск в Vista или Windows 7.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.08.2010, 12:12
Ответы с готовыми решениями:

Плавный переход изображения в фон сайта
Всем привет. Искал в интернете и не смог найти решение задачи. Возможно запросы не так составлял. Короче, к сути. На сайте отображаются...

Как отключить автозамену в программе и плавный переход из одного цвета в другой.
При работе с оператором Input, когда печатаю слово, у меня никак не убирается автозамена букв (т. е. когда я дополняю слова в середине или...

WPF, MVVM, Переход из одного окна в другое
Здравствуйте. Пишу курсовой проект &quot;Электронный менеджер&quot;. И застопорился в самом начале. Подразумевается, что моим приложением будут...

5
10 / 10 / 1
Регистрация: 27.02.2009
Сообщений: 94
30.08.2010, 20:01  [ТС]
Вот нарыл функции, может кто знает как использовать их для плавной смены Image в PictureBox:
VB.NET
1
2
3
Declare Function AlphaBlending Lib "msimg32.dll" Alias "AlphaBlend" (ByVal hdcDest As Long, ByVal nXOriginDest As Long, ByVal nYOriginDest As Long, ByVal nWidthDest As Long, ByVal nHeightDest As Long, ByVal hdcSrc As Long, ByVal nXOriginSrc As Long, ByVal nYOriginSrc As Long, ByVal nWidthSrc As Long, ByVal nHeightSrc As Long, ByVal BF As Long) As Long
 
Declare Function DrawTransparent Lib "msimg32.dll" Alias "TransparentBlt" (ByVal hdcDest As Long, ByVal nXOriginDest As Long, ByVal nYOriginDest As Long, ByVal nWidthDest As Long, ByVal nHeightDest As Long, ByVal hdcSrc As Long, ByVal nXOriginSrc As Long, ByVal nYOriginSrc As Long, ByVal nWidthSrc As Long, ByVal nHeightSrc As Long, ByVal crTransparent As Long) As Long
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
30.08.2010, 23:56
1) Неверные объявления функций.
2) Эти функции Вам не помогут. Тут надо попиксельно или через LockBits (скорее всего).
1
10 / 10 / 1
Регистрация: 27.02.2009
Сообщений: 94
31.08.2010, 00:26  [ТС]
Цитата Сообщение от SSTREGG Посмотреть сообщение
Тут надо попиксельно или через LockBits (скорее всего)
Напишите пример пожалста. А может функцию AlphaBlend использовать?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
31.08.2010, 00:48
Цитата Сообщение от musicstashall Посмотреть сообщение
Напишите пример пожалста
Если б я знал Я с графикой почти не работаю.
Цитата Сообщение от musicstashall Посмотреть сообщение
А может функцию AlphaBlend использовать?
Тоже не то. DrawTransparent выглядит как расширение над AlphaBlend. Откуда Вы взяли DrawTransparent?
0
 Аватар для Pooh
408 / 360 / 82
Регистрация: 07.10.2009
Сообщений: 558
03.09.2010, 12:10
Вот проект с плавным переходом одного изображения в другое, исходники накопал на другом форуме, соответственно, ссылку дать не могу, перед автором стыдно
Вложения
Тип файла: zip WinApp.zip (45.9 Кб, 103 просмотров)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.09.2010, 12:10
Помогаю со студенческими работами здесь

Переход из одного числа в другое за отрезок времени
Есть числа А и Б. Нужно к числу А прибавлять какое то число, чтобы за данный отрезок времени, например за три секунды, число А стало равно...

Наложение одного изображения на другое
Делаю через imagecopy(), но проблема в том, что одно из изображений получаю так: $pp=&quot;&amp;alt img...

Наложение одного изображения на другое
Доброго времени суток! В игре нужно реализовать блокировку кнопок, с наложением &quot;замочка&quot; на эти кнопки. Кнопка представлена...

Наложение одного изображения на другое
Здравствуйте! Не получается сделать эффект наложения картинки одной на другую. 1)Макет(т.е. так, как надо): 2)Так, как...

Как правильно организовать переход с одного активити на другое с паролем
Как правильно организовать переход с одного активити на другое с паролем (на первом активити вводится пароль и при верном вводе, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru