Comments 29
Да вы и правда сумасшедший. В хорошем смысле слова =) Что в следующий раз будете перерисовывать? :)
+3
Под Windows 8 после разного рода ресайзинга приложение скушало 540 Mb памяти. Причем на размер откушанной памяти, как я понял, влияет то, куда падает тень, а не размер окна.
Видимо, так делать действительно «не стоит» :)
Видимо, так делать действительно «не стоит» :)
+3
Возможно, что-то с Aero связано, но утечек памяти нет. При простом перемещении ничего не происходит, только ресайз дичает. Если изначально большое окно, то тоже все ОК с памятью.
0
Дело не в утечках, думаю. При запуске — 79 Мб. Немного расширяем — 250. Еще немного — 540. Еще немного — 270. Размер отжираемой памяти не прямо пропорционален размеру окна, очевидно.
0
Более того, если в дизайнере VS сделать это окно изначально совсем большим, то при запуске опять всего пара десятков Мб. пока не начнешь ресайзить. Любопытно, надо будет поэкспериментировать.
0
Попробуйте сразу делать настоящее окно размером во весь экран, а потом просто перемешать область, на которой рисуете. Винда нормально будет реагировать на мышь в полностью прозрачных областях. У меня такой подход используется, прожорливости по памяти не замечено.
0
Любопытно, если в коде ресайза сделать:
то сразу все хорошо становится с памятью. У меня пока нет идей зачем винда форсит так много памяти приложению, возможно, бага/фича винды. Обновлю сорцы и релиз
if (!DesignMode && Created)
{
BMP = new Bitmap(Width, Height, PixelFormat.Format32bppPArgb);
GFX = Graphics.FromImage(BMP);
// ....
RedrawForm();
GC.Collect(); // <---- ?! added
}
то сразу все хорошо становится с памятью. У меня пока нет идей зачем винда форсит так много памяти приложению, возможно, бага/фича винды. Обновлю сорцы и релиз
0
Все, проблема решена. Это я запоролся в 7 утра в цикле не диспозить BMP. Спасибо:
alphawindow.codeplex.com/discussions/429242"
и GC.Collect не нужен
alphawindow.codeplex.com/discussions/429242"
и GC.Collect не нужен
+1
Так что за API, созданный для рисования тени под курсором?
0
Так это же обычные Layered Windows
+6
Он, родимый, но с немного другим подходом
0
А в чем собственно состоит этот другой подход?
+2
два чая этому господину, присоединяюсь к вопросу.
магическая константа, я так понимаю, это WS_EX_LAYERED.
магическая константа, я так понимаю, это WS_EX_LAYERED.
-1
Да, разумеется она. Любопытно почитать на MSDN, что в Windows 8 этот стиль может быть наложен так-же для дочерних окон. Интересно зачем, и что с этим можно забавного придумать.
0
UFO just landed and posted this here
Неплохо, но на других окнах остаются артефакты после изменения размеров вашего окна.
0
Я так понимаю, у вас, как и у меня — некоторые участки окна сзади начинают смазываться или повторяться? А стоит окно увести, с этого места — они всё равно не пропадают.
upd: точнее пропадают, когда отпускаешь кнопку мыши.
upd: точнее пропадают, когда отпускаешь кнопку мыши.
0
Глаз споткнулся о картинку
Спейсинг между границей окна слева и кнопками больше, чем между границей окна справа и кнопками
И не равен спейсингу между кнопками
То же самое и на вертикали
ууууууууу, ненавижу свои глаза
От меня прораб из-за этого чуть не сбежал при ремонте. Все с линейкой лазил на потолок, че-то доказать пытался. Потом имел удивленный вид.
Спейсинг между границей окна слева и кнопками больше, чем между границей окна справа и кнопками
И не равен спейсингу между кнопками
То же самое и на вертикали
ууууууууу, ненавижу свои глаза
От меня прораб из-за этого чуть не сбежал при ремонте. Все с линейкой лазил на потолок, че-то доказать пытался. Потом имел удивленный вид.
+3
У меня такое чувство что все программирование по win это такие хаки.
-5
А, ну расскажите нам, как такое же сделать под Unity, оценим красоту.
0
В X11 при наличии композитного оконного менеджера достаточно просто прицепить к окну Visual с альфа каналом и рисовать на нём как ни в чём не бывало с полной поддержкой дочерних окон. Собсно, Wine через эту особенность и эмуриует виндовый костыль со слоями. С другой стороны надо понимать, что этот самый костыль тянется со времён, когда в винде никакого композитинга окон в помине не было, да и железо не могло его полноценно потянуть.
+1
Я как-то тоже описывал подобное habrahabr.ru/post/126793/
0
Sign up to leave a comment.
15000 FPS. Хардкорные трюки ч.2 — ну cовсем нестандартное окно