Сайт для программистов

суббота, 28 февраля 2009 г.

Удаление файлов из корзины

В своей книге C#.Советы программистам я привел несколько примеров удаления файлов в системную Корзину. Если вы хотите удалить файлы из самой корзины, то воспользуйтесь функцией Windows API SHEmptyRecycleBin.
[C#]
[DllImport("shell32.dll")]
static extern int SHEmptyRecycleBin(IntPtr hWnd, string pszRootPath, uint dwFlags);
[Visual Basic]
Declare Function SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" (
ByVal hwnd As Integer,
ByVal pszRootPath As String,
ByVal dwFlags As Integer) As Integer


Теперь остается только вызвать функцию с нужными параметрами.
SHEmptyRecycleBin(IntPtr.Zero, "", SHERB_NOCONFIRMATION SHERB_NOSOUND);
Полное описание функции будет добавлено в справочник по функциям Windows API в среде .NET Framework.
Удачного вам программирования!

суббота, 14 февраля 2009 г.

Создание кружочков с цифрами без Photoshop

Сегодня в рассылке VB Helper Newsletter (http://www.vb-helper.com/) прочитал, как автор рассылки создавал специальные картинки для иллюстрации к своим книгам или статьям. Картинки представляют собой маленькие кружочки с цифрами внути. Подобные картинки обычно размещают для показа последоватьельности действий. Например, установите текст в текстовом поле (рис.1), нажмите на кнопку Далее (рис.2) и тому подобное. Безусловно, подобные вещи можно сделать в фотошопе и другом графическом редакторе. Но программисты не ищут легких путей. Гораздо интереснее самому генерировать картинки. Хотя, если серьезно, пример обладает определенным потенциалом для изучения техники работы с графикой, а также может послужить отправной точкой для создания других интересных вещей, например, генерирование лотерейных шаров с номерами.



Пример я портировал с Visual Basic на C#. Желающие ознакомиться с исходниками на VB, могут скачать пример с http://www.vb-helper.com/HowTo/howto_2005_make_number_icons.zip.



Привожу пример на C#. Одно маленькое замечание: в первоисточнике использовался цикл for для генерации десяти кружочков с цифрами от 0 до 9. Я ограничился одной цифрой 1.




const int WID = 24;



string base_path = @"e:\down\"; // ваш путь к папке



Font the_font = new Font("Arial", 10, FontStyle.Bold);



Bitmap bm = new Bitmap(WID,WID);



Graphics gr = Graphics.FromImage(bm);



gr.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;

gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

gr.Clear(Color.White);



Rectangle layout_rectangle = new Rectangle(0, 0, WID - 1, WID - 1);



using (LinearGradientBrush br = new LinearGradientBrush(layout_rectangle,

Color.White,Color.Blue,

LinearGradientMode.ForwardDiagonal))

{

gr.FillEllipse(br,layout_rectangle);

gr.DrawEllipse(Pens.Blue, layout_rectangle);

}



StringFormat string_format = new StringFormat();

string_format.LineAlignment = StringAlignment.Center;

string_format.Alignment = StringAlignment.Center;

gr.DrawString("1",the_font,Brushes.White,layout_rectangle,string_format);

bm.Save(base_path + "1" + ".bmp",System.Drawing.Imaging.ImageFormat.Bmp);



MessageBox.Show("Готово");




Кстати, сегодня День святого Валентина. Поздавляю всех романтичных котиков и кошечек )))