Страница: 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 | 
 
		
			Поиск по форуму