1 ضمیمه
رسم مسیر مارپیچ در فرم C# + معادله خط برای Buzzer کردن فرم
سلام
نمی دونم تالار گفتگوی درستی رو انتخاب کردم یا نه!
من فقط میخواستم یک Buzzer* برای فرمم بزارم که رسیدم به این مسألهی بسیار جالب
مساله به این صورته که با استفاده از جذر اعداد باید یک مارپیچ رو درون فرم رسم کنم:
البته شکل ساده تر مساله به این صورته:
البته رسم گرافیکی منظورم نیست ها!
خب برای بازر مختصات فرمم رو صفر در نظر میگیرم
حالا چجوری با چه فرمولی فرمم رو حرکت بدم؟
کد حرکت فرم در دسکتاپ رو نمی خوام ها
فقط فرمول بدست آوردن نطقهی بعدی جهش!
Buzzer* : نمی دونم ازاون قدیمیای Yahoo هستید یا نه ولی توی چت یه لرزانندهی جالب داشت که وقتی میزدی فرم خیلی قشنگ می لرزید حالا من بصورت رندم هم فرمم رو تکون تکون میدم ولی خب کار باید قشنگ باشه!
نقل قول: رسم مسیر مارپیچ در فرم C# + معادله خط برای Buzzer کردن فرم
سلام
اگه منظورتون به شکل حلزون حرکت کنه به این صورته
Point polarToCartesian(double distance , double angle)
{
return new Point((int)(Math.Cos(angle) * distance) ,(int) (Math.Sin(angle) * distance));
}
IEnumerable<Point> Halazoon(double startAngle, int scale, Size offset)
{
for (int i = 1; i < 87; i++)
{
yield return
Point.Add
(
polarToCartesian
(
Math.Sqrt(i + 1)* scale ,
startAngle += Math.Acos(Math.Sqrt((double)i / (i + 1)))
),
offset
);
}
}
void Button1Click(object sender, EventArgs e)
{
var pts = Halazoon(0.0, 20, new Size(200, 200));
foreach (var element in pts)
{
this.Location = element;
System.Threading.Thread.Sleep(10);
}
this.CreateGraphics().DrawLines(Pens.Black, pts.ToArray());
}
2 ضمیمه
نقل قول: رسم مسیر مارپیچ در فرم C# + معادله خط برای Buzzer کردن فرم
بسیار بسیار ممنون از شما!
من کدهای بالا رو یکم دستکاری کردم تا برای نمایش به کاربر مناسب باشه.
کاربران عزیز قطعه کد زیر رو به برنامه اضافه کنید :
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
// Thanks to
// rahnema1 [https://barnamenevis.org]
// test and improved by amir4317
namespace BuzzerTest
{
public static class Buzzer
{
private static Point PolarToCartesian(double distance, double angle)
{
return new Point((int)(Math.Cos(angle) * distance), (int)(Math.Sin(angle) * distance));
}
private static IEnumerable<Point> Halazoon(double startAngle, int scale, Size offset, int range = 180)
{
for (var i = 1; i < range; i++)
{
yield return
Point.Add(
PolarToCartesian(Math.Sqrt(i + 1) * scale,
startAngle += Math.Acos(Math.Sqrt((double)i / (i + 1)))),
offset);
}
}
public static void BuzzerMe(this Form form, int scale = 1, int sleep = 3, int range = 180)
{
var pts = Halazoon(0.0, scale, new Size(form.DesktopLocation), range);
var elements = pts as IList<Point> ?? pts.ToList();
for (var i = elements.Count - 1; i > 1; i--)
{
form.DesktopLocation = elements[i];
//Refresh();
form.BringToFront();
System.Threading.Thread.Sleep(sleep);
}
//CreateGraphics().DrawLines(Pens.Black, elements.ToArray());
}
}
}
و درون فرمتون هنگامی که میخواهید فرم ویبره بزنه از این کد خیلی راحت استفاده کنید:
this.BuzzerMe();
برنامهی مثال برای شما آماده کردم:بدانلودید و لذت ببرید!
(صلوات توی این ماه عزیز فراموش نشه!)ضمیمه 133191
نقل قول: رسم مسیر مارپیچ در فرم C# + معادله خط برای Buzzer کردن فرم
نقل قول:
نوشته شده توسط
Amir4317
بسیار بسیار ممنون از شما!
من کدهای بالا رو یکم دستکاری کردم تا برای نمایش به کاربر مناسب باشه.
کاربران عزیز قطعه کد زیر رو به برنامه اضافه کنید :
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
// Thanks to
// rahnema1 [https://barnamenevis.org]
// test and improved by amir4317
namespace BuzzerTest
{
public static class Buzzer
{
private static Point PolarToCartesian(double distance, double angle)
{
return new Point((int)(Math.Cos(angle) * distance), (int)(Math.Sin(angle) * distance));
}
private static IEnumerable<Point> Halazoon(double startAngle, int scale, Size offset, int range = 180)
{
for (var i = 1; i < range; i++)
{
yield return
Point.Add(
PolarToCartesian(Math.Sqrt(i + 1) * scale,
startAngle += Math.Acos(Math.Sqrt((double)i / (i + 1)))),
offset);
}
}
public static void BuzzerMe(this Form form, int scale = 1, int sleep = 3, int range = 180)
{
var pts = Halazoon(0.0, scale, new Size(form.DesktopLocation), range);
var elements = pts as IList<Point> ?? pts.ToList();
for (var i = elements.Count - 1; i > 1; i--)
{
form.DesktopLocation = elements[i];
//Refresh();
form.BringToFront();
System.Threading.Thread.Sleep(sleep);
}
//CreateGraphics().DrawLines(Pens.Black, elements.ToArray());
}
}
}
و درون فرمتون هنگامی که میخواهید فرم ویبره بزنه از این کد خیلی راحت استفاده کنید:
this.BuzzerMe();
برنامهی مثال برای شما آماده کردم:
بدانلودید و لذت ببرید!
(صلوات توی این ماه عزیز فراموش نشه!)
ضمیمه 133191
ممنون از برنامه ای که گذاشتی ولی من دانلود میکنم اما اکسترکت نمیشه و میگه دمیج داره فایل ممنون میشم مجدد آپلود کنید