Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прозрачность контрола, формы, как сделать? 
:(
    Опции темы
Mastkir
Дата 1.6.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



Доброго дня!

Можно ли сделать контрол (UserControl) или форму (DevComponents.DotNetBar.Office2007Form)
прозрачными?

Причем нужно там (на контроле, или форме) рисовать картинку. 
Так вот, нужно, чтобы картинку видно было, а сам контрол был прозрачным.

Контролы, как я понял, вообще прозрачными стать не могут, а у форм есть свойство Opacity, отвечающее за прозрачность. Однако при установке его в ноль, вся форма становится прозрачным, включая картинку на ней. А картинка должна остаться видимой.

Помогите  smile  smile  smile 
PM MAIL   Вверх
Naum
Дата 1.6.2007, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



У формы есть еще свойство TransparencyKey. Устанавливаешь его в какой-либо цвет, и этот цвет будет прозрачным.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Mastkir
Дата 1.6.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



Не понял. (

Попробовал так :
this.TransparencyKey = this.BackColor;

- ничего прозрачным не стало (

На конроле в его центре находится небольшая картинка. Нужно, чтобы форму видно не было,
а картинка была. Что устанавливать в TransparencyKey, не понимаю(
PM MAIL   Вверх
Naum
Дата 1.6.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Странно, должно работать. Ты эту строчку
Цитата(Mastkir @  1.6.2007,  13:41 Найти цитируемый пост)
this.TransparencyKey = this.BackColor;

в каком месте написал?



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Mastkir
Дата 1.6.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



В конструкторе формы, после InitializeComponent();
PM MAIL   Вверх
Naum
Дата 1.6.2007, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



И вообще ничего не меняется?


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Mastkir
Дата 1.6.2007, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



да, вообще ничего не меняется :(
PM MAIL   Вверх
Azzdorf
  Дата 3.6.2007, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



а свойство Opacity искал???
--------------------
Иногда шаг вперед - это результат хорошего пинка под зад.
PM MAIL   Вверх
spleaner
Дата 6.6.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 26.2.2007

Репутация: 1
Всего: 3



Немножко неправильно сделал..
надо было так:

Код
this.TransparencyKey=Color.Black;


и получилось бы вот что:
user posted image

ну т.е. весь цвет Color.Black (все, что черное) на форме станет прозрачным!
PM   Вверх
3she1on
Дата 12.11.2008, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 15.10.2008

Репутация: нет
Всего: нет



У меня вопрос... Как можно реализовать такую задачу для dotNET CF? конкретно, для UserControl. Заранее, спс
PM MAIL   Вверх
diadiavova
Дата 12.11.2008, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 16
Всего: 142



Цитата(Mastkir @  1.6.2007,  12:04 Найти цитируемый пост)
Контролы, как я понял, вообще прозрачными стать не могут

Контролы становятся прозрачными если присвоить их свойству BackColor прозрачный цвет. В коде.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
BestRoot
Дата 21.11.2008, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 30.10.2008

Репутация: нет
Всего: нет



Вырезать цвет это  не значит сделать прозрачным
PM MAIL WWW ICQ   Вверх
Unlocker
Дата 30.1.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: нет
Всего: 2



Надо сделать, чтобы PictureBox в VS2003 имел прозрачный фон. На нем стоит .png картинка с прозрачными фрагментами. получается, что какой бы не ставил альфа-канал у BackColor, получается непрозрачный цвет. какие могут быть предложения по данному вопросу?
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
SkCom
Дата 10.2.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



Доброго времени суток!

Продолжая тему о прозрачности контролов,
создал свой контрол, наследованный от picturebox.

Код

public partial class xPicBox : PictureBox
{
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x00000020;  //WS_EX_TRANSPARENT  
                return cp;
            }
        }

        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case 0x0014:
                    return;
            }
            base.WndProc(ref m);
        }

        public xPicBox()
        {
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
            this.BackColor = Color.Transparent;
            InitializeComponent();
        }

        protected override void OnPaintBackground(PaintEventArgs e)
        {
            
        }

        protected override void OnMove(EventArgs e)
        {
            if (Parent != null)
                Parent.Invalidate(Bounds, true);
        }
}


я не силен на в С++ и С#, на VBNet это будет так

Код

Public Class SkCheckButton
    Inherits System.Windows.Forms.Control
   Public Sub New()
      MyBase.New()

      ' This call is required by the Component Designer.
      InitializeComponent()

      'Add any initialization after the InitializeComponent() call
      Me.SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.DoubleBuffer, True)
      Me.SetStyle(ControlStyles.ResizeRedraw Or ControlStyles.Selectable, True)
      Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True)
      Me.SetStyle(ControlStyles.Opaque, True)
      Me.BackColor = Color.Transparent
    End Sub

    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
      Get
        Const WS_EX_TRANSPARENT As Integer = &H20
        CreateParams = MyBase.CreateParams
        CreateParams.ExStyle = WS_EX_TRANSPARENT
        Return CreateParams
      End Get
    End Property
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
      If (m.Msg = 15) Then
        MyBase.DefWndProc(m)

        Draw()

      Else
        MyBase.WndProc(m)
      End If
    End Sub

    Protected Sub Draw()
      Dim m_Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromHwnd(MyBase.Handle)
      m_Graphics.SmoothingMode = SmoothingMode.AntiAlias
      m_Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic

      m_Graphics.DrawString(Me.Text, Me.Font, New SolidBrush(ForeColor), RectangleF.op_Implicit(ClientRectangle))
    End Sub



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0846 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.