PDA

View Full Version : سوال: شبیه سازی فتوشاپ



as987498749874
سه شنبه 14 آذر 1391, 10:12 صبح
سلام دوستان

آیا میشه برنامه ای مثل فتوشاپ یا اتوکدنوشت که بشه روی شکل زوم کرد

مثل ابزار زوم + و -

با تشکر

SHD.NET
سه شنبه 14 آذر 1391, 12:08 عصر
شدن که میشه . هیچ کاری نشد نداره . اما من گشتم چیزییدا نکردم

ra0661
سه شنبه 14 آذر 1391, 14:14 عصر
قبلا فکر کنم بهش برخورد کردم این مورد رو که عکس میدی بعد زوم میکنی روش تو انجمن فکر کنم باشه اما مطمعنم دیدمش

program2vb
سه شنبه 14 آذر 1391, 15:37 عصر
قبلا فکر کنم بهش برخورد کردم این مورد رو که عکس میدی بعد زوم میکنی روش تو انجمن فکر کنم باشه اما مطمعنم دیدمش

سلام به شما دوست عزیز جستجو کن قبلا تو انجمن زیاد بحث شده روش ..... موفق و پیروز باشیی یا علی

as987498749874
سه شنبه 14 آذر 1391, 16:23 عصر
با تشکر

نه منظور من زوم روی فرم هست نه اینکه به عکس تبدیل بشه بعد زوم کنم

یعنی من چند تا خط با دستور Line رسم کردم و خاصیت Autoredraw هم فعاله حالا می خوام روی اون خطا زوم کنم چیکار باید بکنم0نمی خوام به عکس تبدیل بشه)

باز هم از پاسخگویی شما متشکرم

ra0661
سه شنبه 14 آذر 1391, 18:14 عصر
سلام به شما دوست عزیز جستجو کن قبلا تو انجمن زیاد بحث شده روش ..... موفق و پیروز باشیی یا علی

بهتر نبود به جای پست دادن بیهوده تو یه جستجو کوچیک میزدی ؟!
الان من چیزی گفتم شما هم فقط تایید کردید همون تشکر را میزدی بهتر بود تا این پست رو d:

as987498749874
چهارشنبه 15 آذر 1391, 11:25 صبح
بهتر نبود به جای پست دادن بیهوده تو یه جستجو کوچیک میزدی ؟!
الان من چیزی گفتم شما هم فقط تایید کردید همون تشکر را میزدی بهتر بود تا این پست رو d:

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

اما من می خوام که یک قسمت که مثل فتوشاپ که با ابزار زوم روش کلیک میشه بزرگ بشه و روی خودش نمایش بده نه توی یک کنترل دیگه مثل همون کامپوننته

امیدوارم منظورم رو خوب رسونده باشم

majidbahrami
چهارشنبه 15 آذر 1391, 15:36 عصر
کد زیر با یه اسکرول روی عکس فرم زوم میکنه..
ببین به دردت میخوره


Private Sub VScroll1_Change()
Me.Cls
x = Picture1.Width * VScroll1.Value / 1000
y = Picture1.Height * VScroll1.Value / 1000
If x < Screen.TwipsPerPixelX Then x = Screen.TwipsPerPixelX
If y < Screen.TwipsPerPixelY Then y = Screen.TwipsPerPixelY
X1 = (Me.Width - x) / 2
Me.PaintPicture Picture1.Picture, X1, 1000, x, y
End Sub

vbhamed
چهارشنبه 15 آذر 1391, 20:52 عصر
سلام

براي اين كار بايد يك ساختمان داده (با استفاده از دستور Type) تشكيل بدين كه مشخصات اشياء رسم شده رو در خودش نگه داره سپس يك آرايه از اين ساختمان داده بسازيد و هر شكلي رسم مي‌كنيد مشخصاتش رو در آرايه ذخيره كنيد
حالا براي زوم كردن مختصات شروع و پايان شكل كه مي‌تونه خط باشه رو ضربدر عددي خاص مي‌كنيد، صفحه رو پاك مي‌كنيد و دوباره طبق مختصات جديد رسم مي‌كنيد تا شكلتون زوم بشه

تعريف ساختمان داده خط
Private Type sLine
x1 As Long
y1 As Long
x2 As Long
y2 As Long
cl As Long 'Color
End Type

تعريف ساختمان داده دايره
Private Type sCircle
x As Long
y As Long
r As Single
cl As Long 'Color
End Type

تعريف 21 آرايه براي نگهداري اطلاعات 21 عدد خط
Dim LineArray(20) As sLine

تعريف 11 آرايه براي نگهداري اطلاعات 11 عدد دايره
Dim CircleArray(10) As sCircle

مقدار دهي مختصات 21 خط به صورت تصادفي
For i = 0 To UBound(LineArray)
With LineArray(i)
.x1 = Rnd * 1000
.y1 = Rnd * 1000
.x2 = Rnd * 1000 + .x1
.y2 = Rnd * 1000 + .y1
.cl = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
End With
Next

مقدار دهي مختصات 11 دايره به صورت تصادفي
For i = 0 To UBound(CircleArray)
With CircleArray(i)
.x = Rnd * 1000
.y = Rnd * 1000
.r = Rnd * 200
.cl = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
End With
Next


رسم شكل تعريف شده در آرايه ها با فاكتور زوم دلخواه
Private Sub HScroll1_Change()

Dim zoom!, i%

zoom = HScroll1.Value / 10

Picture1.Cls
For i = 0 To UBound(LineArray)
Picture1.Line (LineArray(i).x1 * zoom, LineArray(i).y1 * zoom)-(LineArray(i).x2 * zoom, LineArray(i).y2 * zoom), LineArray(i).cl
Next

For i = 0 To UBound(CircleArray)
Picture1.Circle (CircleArray(i).x * zoom, CircleArray(i).y * zoom), CircleArray(i).r * zoom, CircleArray(i).cl
Next

End Sub
در برنامه بالا ساختمان داده براي خط و دايره تعريف كرديم، شما مي‌تونيد براي مستطيل و ذوزنقه و متوازي الاضلاع و مثلث و هر چيز دلخواه ديگه هم تعريف كنيد و طبق همين روال به برنامه اضافه كنيد
ضمنا مي‌تونيد دقيقا اين ساختار رو به عنوان جدول در بانك اطلاعاتي ايجاد كنيد و شكلهاتون رو ذخيره و بازيابي كنيد

96111

البته در برنامه نمونه من تعداد خطوط و دايره ها (همون تعداد عناصر آرايه) رو ثابت در نظر گرفتم ولي شما مي‌تونيد با استفاده از Redim Preserve اونها رو متغير در نظر بگيريد چيزي شبيه كد زير
Dim LineArray() As sLine

Private Sub Form_Load()

x = 10

ReDim Preserve LineArray(x)

End Sub

m.4.r.m
چهارشنبه 15 آذر 1391, 23:36 عصر
برای این کار وی بی خیلی ضعیفه باید با VC++ و رابط گرافیکی OepenGL یا Directx استفاده کنی خود وی بی هم می تونه با Directx ارتباط برقرار کنه دنبال این آموزش باش
http://forum.6o5ia.ir/showthread.php?5749-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-DirectX-Graphic-%D8%AF%D8%B1-%D9%88%DB%8C%DA%98%D9%88%D8%A7%D9%84-%D8%A8%DB%8C%D8%B3%DB%8C%DA%A9