>>> import time >>> time.asctime(time.strptime('2008 50 1', '%Y %W %w')) 'Mon Dec 15 00:00:00 2008'
Принятие первого дня Вашей недели является понедельником, используйте
%U
вместо%W
, если первый день Вашей недели является воскресеньем. См. документацию для strptime для деталей.Обновление: Фиксированное недельное число.
%W
директива на основе 0, таким образом, неделя 51 была бы введена как 50, не 51.
Я не думаю, что вы можете применить прозрачность (правильнее назвать Непрозрачность ) только к части формы, а не ко всей форме.
Однако вы можете довольно легко создать форму произвольной формы (т.е. непрямоугольную), при этом различные части этой формы будут прозрачными. В зависимости от точного «внешнего вида», которого вы пытаетесь достичь, это может быть наиболее близким к вам.
Взгляните на эти ссылки для создания вашей собственной формы нестандартной формы:
Создание нестандартных форм Windows Forms в .NET
Пользовательская форма с раскрывающимся списком в C #
Формы Windows Forms и элементы управления в Visual Studio .NET
Единственной альтернативой может быть отображение двух форм, одна из которых настроена как частично прозрачный. Вы должны программно обеспечить, чтобы вторая форма располагалась непосредственно рядом с «основной» формой и перемещалась / изменяла размер пропорционально, когда пользователь перемещает / изменяет размер «основной» формы. Хотя это две формы, пользователю может показаться, что на самом деле это только одна форма, хотя это может быть довольно сложно реализовать и не будет идеальным решением (но может быть «достаточно хорошим» в зависимости от в зависимости от ваших конкретных потребностей).
Вы можете сделать это, создав полностью прозрачное окно в вашей форме, а затем поместив полупрозрачную форму поверх полностью прозрачного окна.
Сначала установите для параметра TransparencyKey основной формы значение Color.Red, затем поместите панель с именем panel1
на форму и установите для параметра BackColor значение Red. Это создаст полностью прозрачное «окно». Создайте ссылку на форму на уровне формы следующим образом:
private Form _floater;
Затем поместите этот код в событие Load вашей основной формы:
_floater = new Form();
_floater.ShowInTaskbar = false;
_floater.FormBorderStyle = FormBorderStyle.None;
_floater.Opacity = .5;
_floater.Size = panel1.Size;
_floater.StartPosition = FormStartPosition.Manual;
_floater.Location = panel1.PointToScreen(new Point(0, 0));
_floater.Show(this);
Наконец, поместите этот код в событие Move вашей основной формы:
_floater.Location = panel1.PointToScreen(new Point(0, 0));
Единственная проблема здесь заключается в том, что если пользователь щелкает в полупрозрачном «окне», вторая форма получает фокус, поэтому панель заголовка основной формы неактивна.
Щелкните здесь , чтобы запустить образец приложения с этим полупрозрачным окном на форма.
Я не уверен, возможно ли это даже с WinForms без чрезмерного использования вызовов p / invoke и обходных путей.
Вместо этого вы можете использовать Windows Presentation Foundation (WPF), где такие эффекты почти тривиально реализовать.
Простой:
myForm.Opacity = 80; // Change 80 with your value