Страница: 1 |
|
Вопрос: Прозрачная форма
|
Добавлено: 10.02.10 23:26
|
|
Автор вопроса: Spiritsun
|
Далаю круглые часы на рабочий стол. Извените, может я повторяюсь, проблемка такая, изображение фона часов в формате png (вобщем не важно), c альфа каналом (полупрозрачные края). Как сделать чтобы небыло видно фона формы?
Пытаюсь делать так, выставляю цвет фона формы .BackColor и .TransparencyKey равными, но тут возникает проблема, эти самые края с альфа каналом в png накладываются на фон до установки прозрачности и остаются видимыми. Тобиж получается окантовка с цветом фона.
Есть канечно выход, можно делать скриншот задней части формы и вручную методом DrawImage или слитием по OR смешивать с png, но это требует ресурсов и получается както ивратно.
Ответить
|
Номер ответа: 3 Автор ответа: Spiritsun
Вопросов: 15 Ответов: 44
|
Профиль | | #3
|
Добавлено: 11.02.10 16:16
|
благодарю, API UpdateLayeredWindow - думаю это то что мне нужно. С круглой формой тоже прикольно, можно использовать, но текущую проблему не решает. Я хочу, чтобы края имели сглаживание по альфа каналу, если обрезать, то получаются заусенцы. Искал инфц по UpdateLayeredWindow, находил ток примеры по другим языкам или устаревшим версиям vba. К примеру у меня пишет, что мол "As Any" не поддерживается в "eclare". У меня vba .net 2008. Помогите, пжалста, пжалста, пжалста как быть в моём случае.
Вот то, что смог найти:
http://msdn.microsoft.com/en-us/library/ms997507.aspx
http://forum.sources.ru/index.php?showtopic=209331
http://www.gamedev.ru/code/forum/?id=16069&page=2
http://forum.vingrad.ru/faq/topic-158155.html
Вот мой демо код:
png можно скачать отсюда http://spiritsun.narod.ru/files/fon.png
результат такой (виден зелёный контур) http://spiritsun.narod.ru/files/demofon.jpg
- Imports System
- Imports System.IO
- Imports System.Text
- Imports System.Globalization
- Imports System.Drawing.Imaging
- Imports System.Windows.Forms
- Imports System.Windows
- Imports System.Math
- Public Class Main
- Dim formclock As New Form
- Dim clockimage As Image = Image.FromFile("fon.png")
- Dim clockimgbitmap As New Bitmap(clockimage)
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- formclock.FormBorderStyle = FormBorderStyle.None
- formclock.StartPosition = FormStartPosition.Manual
- formclock.Location = New System.Drawing.Point(clock_x, clock_y)
- formclock.TopMost = True
- formclock.AutoSize = False
- formclock.BackColor = Color.FromArgb(0, 255, 0)
- formclock.TransparencyKey = Color.FromArgb(0, 255, 0)
- formclock.BackgroundImage = clockimage
- formclock.Size = New Size(picclock.Size.Width, picclock.Size.Height)
- formclock.Show()
- System.Windows.Forms.Application.DoEvents()
- End Sub
- End Class
Ответить
|
Страница: 1 |
Поиск по форуму