PDA

View Full Version : نوشتن متن در desktop



HOSSEINGHOLI
جمعه 02 فروردین 1387, 13:04 عصر
چطور ی میشه در desktop متن بنویسیم
مانند برنامه های تقویم شمسی که در desktop تاریخ مینویسند

sinpin
جمعه 02 فروردین 1387, 14:11 عصر
چطور ی میشه در desktop متن بنویسیم
مانند برنامه های تقویم شمسی که در desktop تاریخ مینویسند
این دقیقا همون چیزیه که شما میخواین منتها با ++C
http://www.codeproject.com/KB/applications/pcalgen/pcalgen.jpg (http://www.codeproject.com/KB/applications/pcalgen.aspx)

http://www.codeproject.com/KB/applications/pcalgen.aspx

sinpin
جمعه 02 فروردین 1387, 14:49 عصر
و این هم یک نمونه ی ساده در سی شارپ:
http://barnamenevis.org/forum/showpost.php?p=485391

HOSSEINGHOLI
جمعه 02 فروردین 1387, 23:24 عصر
میشه یه کم بیشتر و کامل تر توضیح بدید

اگه میشه سورس برنامه رو بزارید

amironline
شنبه 03 فروردین 1387, 10:45 صبح
میشه یه کم بیشتر و کامل تر توضیح بدید

اگه میشه سورس برنامه رو بزارید

مثال به همراه سورس (http://barnamenevis.org/forum/showpost.php?p=485391&postcount=254)

HOSSEINGHOLI
شنبه 03 فروردین 1387, 10:52 صبح
اگه میشه یه مثال بهتر بزارید چون من این نفهمیدم

sinpin
شنبه 03 فروردین 1387, 11:09 صبح
اگه میشه سورس برنامه رو بزارید
سورس داره.

میشه یه کم بیشتر و کامل تر توضیح بدید

1- برای اینکه بتونید روی دسکتاپ نقاشی بکشید باید هندل گرافیکی اون رو بدست بیارید. اینکار با توابع api انجام شد :

internal static extern IntPtr GetDC(IntPtr hwnd); و به شکل زیر :

IntPtr deskDC = GetDC(IntPtr.Zero);
Graphics g = Graphics.FromHdc(deskDC);

2- باقیه ماجرا هم همون داستان همیشگیه که بوسیله ی شی g نقاشیهاتون رو رسم میکنید.
مثلا برای ترسیم یک نوشته بر صفحه از :

g.DrawStringو ...

HOSSEINGHOLI
شنبه 03 فروردین 1387, 19:25 عصر
من تمام این کدها رو امتحان کردم
eror میده
اگه میشه یه سورس خوب و ساده برام بزارید
ممنون میشم

sinpin
شنبه 03 فروردین 1387, 22:16 عصر
من تمام این کدها رو امتحان کردم
eror میده
اگه میشه یه سورس خوب و ساده برام بزارید
ممنون میشم
دوست عزیز کدی که من برای شما نوشتم هم خوب بود و هم بسیار ساده !
حتی پروژه ی کامل اون رو هم آپلود کردم هرچند که واقعا نیازی نبود.
فکر میکنم مشکل اصلی شما با +GDI باشه چون هیچ کار خاصی در اون کد انجام نشد جز نوشتن یک متن و رسم یک مستطیل.
اگه مشکل خاصی هست عنوان کنید وگرنه فکر میکنم این بحث بیهوده ادامه پیدا کرده.

HOSSEINGHOLI
سه شنبه 06 فروردین 1387, 10:59 صبح
اخه این چیزی که من میخام نیست
من میخام مثلا در desktop اسم خودمو بنویسم
ولی کد شما یه مستطیل میکشه اونم ند در desktop
بعد بلا فاصله بسته میشه
من یه کدی مثل اون تقویم که شما عکسشو گذاشتید میخام

sinpin
سه شنبه 06 فروردین 1387, 13:40 عصر
اخه این چیزی که من میخام نیست
من میخام مثلا در desktop اسم خودمو بنویسم
ولی کد شما یه مستطیل میکشه اونم ند در desktop
بعد بلا فاصله بسته میشه
من یه کدی مثل اون تقویم که شما عکسشو گذاشتید میخام
شما برنامه رو کامپایل کنید
و بعد کامپایل شده ی اون رو اجرا کنید و نه از محیط vs
ضمنا با اینکار نمیتونید تصویر ثابتی داشته باشید چون با یک رفرش ساده - مثل حرکت دادن یک پنجره - تصویر پاک میشه.

فکر میکنم راه حل این باشه که :
1- شما ابتدا تصویر پشت زمینه ی دسکتاپ رو بدست بیارید
2- نقاشی خودتون رو روی اون رسم کنید
3- تغییرات اعمال شده رو با نام همون فایل و در همون مسیر ذخیره کنید

اینکار میتونه هر وقت کامپیوتر روشن شد و یا ساعت به 12 شب رسید انجام بشه و نه همیشه.

HOSSEINGHOLI
سه شنبه 06 فروردین 1387, 23:16 عصر
میشه کدی را که برای انجام این کار لازم هستش رو برام بزارید
خیلی ازتون ممنون میشم

Mahdi.Kiani
چهارشنبه 07 فروردین 1387, 00:57 صبح
میشه کدی را که برای انجام این کار لازم هستش رو برام بزارید
خیلی ازتون ممنون میشم

سلام
دوست عزیز هدفتون از این کار چیه؟
صرفا اینکه اسمتون را روی صفحه دسکتاپ بنویسید؟
میشه با خاصیت Transparency key فرم و یک Lable این کار را کرد..
اگر دقیق تر بگین برای چه کاری می خواین، متن روی دسکتاپ بنویسین، خیلی بهتره میشه کمک کرد.

یه نمونه خیلی ساده Attach شده
وقتی برنامه را اجرا کردی، یه آیکن کنار ساعت ویندوز میاد که با کلیک راست کردم، می تونی از برنامه خارج بشی

sinpin
چهارشنبه 07 فروردین 1387, 07:42 صبح
دوست عزیز هدفتون از این کار چیه؟

احتمالا ترسیم یک تقویم روی دسکتاپ مانند : برنامه ی "نگار"

HOSSEINGHOLI
چهارشنبه 07 فروردین 1387, 13:01 عصر
مرسی از راهنماییتون
مشکلم تا حد زیادی رفع شد

Mahdi.Kiani
چهارشنبه 07 فروردین 1387, 14:01 عصر
احتمالا ترسیم یک تقویم روی دسکتاپ مانند : برنامه ی "نگار"

خوب در این صورت، با همون trancparncy حل میشه..
یه سری label که text اونا عوض میشه
البته این د ساده ترین حالت بود

arshia_m
چهارشنبه 07 فروردین 1387, 14:46 عصر
سلام
+GDI چیه؟میشه توضیح بدین بدونم.
تشکر

Mahdi.Kiani
چهارشنبه 07 فروردین 1387, 15:05 عصر
سلام
+GDI چیه؟میشه توضیح بدین بدونم.
تشکر

سلام
لطفا از این پس سوالات خود را در تاپیک جداگانه مطرح نمایید

http://de.wikipedia.org/wiki/GDI%2B

به طور خلاصه، تکنیک و امکاناتیست که فراهم شده تا بتونی کارهای گرافیکی را نیز مانند برنامه نویسی های ساده ( مثل فراخوانی چند تا متد) به راحتی انجام بدی و درگیر کارهای سخت افزاری و .. نشی
به عنوان مثال با تعریف یک کلاس LineerGradientBurush و نمونه گیری از آن و تنظیم خواص آن مانند رنگ ها، و ... و همچنین تعریف یک کلاس Rectangle می تونی یک مستطیل گرادیان شده ، ترسیم کنید.

یک نمونه فرم ساده attach شده ...
با +GDI و امکانات اون می تونی کنترل های سفارشی زیبایی بسازی..

*************
از دات نت فریم ورک 3.0 به بعد، تکنیکی ایجاد شد به نام WPF که مخفف (Windows Presentation Foundation ) می باشد.
در ویژوال استودیو 2005، میشد با نصب موارد لازم اقدام به برنامه نویسی WPF کرد. در 2008 به صورت داخلی این گزینه در Template ها وجود دارد.
جهت اطلاعا از این تکنیک
http://en.wikipedia.org/wiki/Windows_Presentation_Foundation

http://msdn2.microsoft.com/en-us/netframework/aa663326.aspx


یک فیلم ویدیویی در باره WPF (http://msdn2.microsoft.com/en-us/library/bb820878.aspx)

Mahdi.Kiani
چهارشنبه 07 فروردین 1387, 15:22 عصر
این هم کد فرم بالاییه
اگه احتیاج داشتی، می تونی ازش استفاده کنی
( دقت کن که این فقط یه نمونه مثال می باشد )


//
//define a Gradient Brush
//
System.Drawing.Drawing2D.LinearGradientBrush lgbrush = new System.Drawing.Drawing2D.LinearGradientBrush(this. ClientRectangle, Color.Blue, Color.White, System.Drawing.Drawing2D.LinearGradientMode.Vertic al);

//
//set smppthingMode to Antialiase
//
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
//
//Draw Gradient Rectangle On From
//
e.Graphics.FillRectangle(lgbrush, this.ClientRectangle);




موفق باشید

s_ahmadneya
یک شنبه 08 دی 1387, 10:50 صبح
سلام
دوست عزیز هدفتون از این کار چیه؟
صرفا اینکه اسمتون را روی صفحه دسکتاپ بنویسید؟
میشه با خاصیت Transparency key فرم و یک Lable این کار را کرد..
اگر دقیق تر بگین برای چه کاری می خواین، متن روی دسکتاپ بنویسین، خیلی بهتره میشه کمک کرد.

یه نمونه خیلی ساده Attach شده
وقتی برنامه را اجرا کردی، یه آیکن کنار ساعت ویندوز میاد که با کلیک راست کردم، می تونی از برنامه خارج بشی
راه حل جالبی بود اما دوست غزیر ایکونهای روی دسکتاپ روی نوشته ها قرار می گیرد برای رفع این مشکل باید چکار کرد؟

s_ahmadneya
یک شنبه 08 دی 1387, 10:58 صبح
شما برنامه رو کامپایل کنید
و بعد کامپایل شده ی اون رو اجرا کنید و نه از محیط vs
ضمنا با اینکار نمیتونید تصویر ثابتی داشته باشید چون با یک رفرش ساده - مثل حرکت دادن یک پنجره - تصویر پاک میشه.

فکر میکنم راه حل این باشه که :
1- شما ابتدا تصویر پشت زمینه ی دسکتاپ رو بدست بیارید
2- نقاشی خودتون رو روی اون رسم کنید
3- تغییرات اعمال شده رو با نام همون فایل و در همون مسیر ذخیره کنید

اینکار میتونه هر وقت کامپیوتر روشن شد و یا ساعت به 12 شب رسید انجام بشه و نه همیشه.
دوست عزیز این روش را من استفاده کردم اما وقتی عکس شما کوچک اس و بصورت center استفاده کنه نوشته بسیار کوچک می شود ویا اگر titel استفاده کنه نوشته ها هم تکراری می شود برای رفع این مشکل باید چکار کرد .
ضمنا" از تایپیک 1001 نکته سی شارپ شما خیلی استفاده می کنم .ممنون ومتشکرم

kianoosh59
دوشنبه 14 اردیبهشت 1388, 18:57 عصر
تشکر فراوان