Pull to refresh

Comments 29

Да вы и правда сумасшедший. В хорошем смысле слова =) Что в следующий раз будете перерисовывать? :)
Под Windows 8 после разного рода ресайзинга приложение скушало 540 Mb памяти. Причем на размер откушанной памяти, как я понял, влияет то, куда падает тень, а не размер окна.
Видимо, так делать действительно «не стоит» :)
Возможно, что-то с Aero связано, но утечек памяти нет. При простом перемещении ничего не происходит, только ресайз дичает. Если изначально большое окно, то тоже все ОК с памятью.
Дело не в утечках, думаю. При запуске — 79 Мб. Немного расширяем — 250. Еще немного — 540. Еще немного — 270. Размер отжираемой памяти не прямо пропорционален размеру окна, очевидно.
Более того, если в дизайнере VS сделать это окно изначально совсем большим, то при запуске опять всего пара десятков Мб. пока не начнешь ресайзить. Любопытно, надо будет поэкспериментировать.
Попробуйте сразу делать настоящее окно размером во весь экран, а потом просто перемешать область, на которой рисуете. Винда нормально будет реагировать на мышь в полностью прозрачных областях. У меня такой подход используется, прожорливости по памяти не замечено.
Любопытно, если в коде ресайза сделать:
if (!DesignMode && Created)
{
	BMP = new Bitmap(Width, Height, PixelFormat.Format32bppPArgb);
	GFX = Graphics.FromImage(BMP);
        // ....
	RedrawForm();
	GC.Collect();    // <---- ?! added
}

то сразу все хорошо становится с памятью. У меня пока нет идей зачем винда форсит так много памяти приложению, возможно, бага/фича винды. Обновлю сорцы и релиз
Так что за API, созданный для рисования тени под курсором?
Он, родимый, но с немного другим подходом
А в чем собственно состоит этот другой подход?
два чая этому господину, присоединяюсь к вопросу.
магическая константа, я так понимаю, это WS_EX_LAYERED.
Да, разумеется она. Любопытно почитать на MSDN, что в Windows 8 этот стиль может быть наложен так-же для дочерних окон. Интересно зачем, и что с этим можно забавного придумать.
Тем не менее, на вопрос то вы не ответили
Боже мой, не будьте занудой. Почитайте статью для начала. Ну почему всегда находится человек не читавший статью и притворяющийся гоблином, чтобы спровоцировать срач в коментах. Я заканчиваю эту ветку коментов, ответов больше не будет.
UFO just landed and posted this here
Неплохо, но на других окнах остаются артефакты после изменения размеров вашего окна.
Я так понимаю, у вас, как и у меня — некоторые участки окна сзади начинают смазываться или повторяться? А стоит окно увести, с этого места — они всё равно не пропадают.

upd: точнее пропадают, когда отпускаешь кнопку мыши.
От размера окна зависит? Какая ОС? До 0.6 обновили? Комп быстрый? По идее это все должно было пропасть в 0.6 само по себе (моя бага была в 0.5)
Действительно хардкорно!
Все конечно здорово придумано и сделано, но я сглашусь с Quester, что нафиг так делать в реальных проектах — програмка жрет кучу памяти (проверял на Windows 7 x64, 250 мег. при 1366х768).
Для красивых менюшек и тултипов — вполне себе вариант.
Глаз споткнулся о картинку
Спейсинг между границей окна слева и кнопками больше, чем между границей окна справа и кнопками
И не равен спейсингу между кнопками
То же самое и на вертикали

ууууууууу, ненавижу свои глаза
От меня прораб из-за этого чуть не сбежал при ремонте. Все с линейкой лазил на потолок, че-то доказать пытался. Потом имел удивленный вид.
>прошу дизайнеров меня не пинать за недостаточный «Pixel Perfect» — я сам делал эту нарезку…
чорт
У меня такое чувство что все программирование по win это такие хаки.
А, ну расскажите нам, как такое же сделать под Unity, оценим красоту.
В X11 при наличии композитного оконного менеджера достаточно просто прицепить к окну Visual с альфа каналом и рисовать на нём как ни в чём не бывало с полной поддержкой дочерних окон. Собсно, Wine через эту особенность и эмуриует виндовый костыль со слоями. С другой стороны надо понимать, что этот самый костыль тянется со времён, когда в винде никакого композитинга окон в помине не было, да и железо не могло его полноценно потянуть.
Я где-то обронил табличку «сарказм». Не находили?
Sign up to leave a comment.

Articles