Как в C# сделать UserControl прозрачным

OlegXXL

Я хочу сделать круглый UserControl, но не могу.
Пробовал
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
и
this.SetStyle(ControlStyles.Opaque, true);
но почему-то они не работают (как будто фон не перерисовывается, см. рисунок). Из-за чего это может быть?

bleyman

Если ты хочешь, чтобы сквозь части контрола просвечивал фон формы, то читай мсдн в инете, гугль даёт туда ссылку по грамотному запросу, как раз позавчера смотрел. Кажется, нужно было AllPaintInWmPaint и UserPaint дополнительно поставить.
Если ты хочешь, чтобы ещё и другие контролы просвечивали, то в общем случае это невозможно, к сожалению. Есть ряд левых решений (опять же выдаваемых гуглем которые мерзенько мигают и вообще работают через раз. Есть частное решение через выставление this.Region в нужную конфигурацию, тогда не будет полупрозрачности, плюс прозрачные куски должны описываться как-то не очень сложно. Это я ещё не пробовал. Ещё есть вариант с осуществлением заката солнца вручную, когда ты рендеришься в буфер, отдаёшь его форме, там переопределяешь ОнПейнт и рисуешь то, что нужно, когда нужно, самостоятельно разруливая z-order, инвалидейты и всё остальное. Даже и не знаю, что получится.
Красин мне вот посоветовал переходить на третий фреймворк и не парицо =)

bleyman

Opaque - это "непрозрачный", к твоему сведению =) Его в false нужно ставить всё-таки наверное. Хотя наверняка утверждать не могу, в микрософте известные выдумщеги сидят =)

Helga87

да, в WPF вообще ряд вещей, которые раньше можно было сделать только с помощью лома и какой-то матери, делаются очень просто.

agaaaa

какую книжку можно почитать, чтоб его заботать?
желательно электронку...

Helga87

Спроси у и околонегошные блоги.

OlegXXL

если поставить opaque в false то посто все будет на сером фоне
Оставить комментарий
Имя или ник:
Комментарий: