رفتن به مطلب

عکس گرفتن از پنل (اسکرین شات)


Mohsen27

ارسال‌های توصیه شده

به نام خدایی ک مارا افرید
اقایون و خانم های برنامه نویس دوس ندارم کتابی بحرفم و گفتار من همینطوریه(وای به حالم وقتی میخوام نامه اداری بنویسم*sarcastic*)
خب بریم سر اصل مطلب
دیدم همه دنبال اسکرین شاتن منم اومدم این تاپیکو زدم ک همه استفاده کنن
اینجاست ک میگن زکات علم انتشار ان است
خب
توی دیزاین یه لایوت بسازین
تو لایوت یه پنل بزارین و توی پنل هم یه ایمیج ویو و لیبل
بیرون از پنل هم یه باتون بزارید به نام button1
خب دیزاین شما باید اینطور باشه
http://answercenter.ir/attachment.php?attachmentid=1608&stc=1
خب
میریم سراغ کد نویسی
تو Sub Globals
این کد هارو بنویسین

Sub Globals
    Private Panel1 As Panel
    Private Button1 As Button
    Private ImageView1 As ImageView
    Private save As Button
    Private Label1 As Label
End Sub

خب اینا ک توضیحی نداره

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("1")
Label1.Text="MusicRoid"
End Sub

خب اینجا تعیین میکنیم که متن لیبل ما MusicRoid باشه
و لایوت رو معرفی کردیم
خب
حالا تو sub button1_clickاینو بنویسید

Sub Button1_Click
      PanelCapture(Panel1,ImageView1)
      Dim Obj1, Obj2 As Reflector
Dim bmp As Bitmap
Dim c As Canvas
Dim now, i As Long
Dim dt As String
DateTime.DateFormat = "yyMMddHHmmss"
now = DateTime.now
dt = DateTime.Date(now) 
Obj1.Target = Obj1.GetActivityBA
Obj1.Target = Obj1.GetField("vg")
bmp.InitializeMutable(Panel1.left + Panel1.Width, Panel1.Top + Panel1.Height) 
c.Initialize2(bmp)
Dim args(1) As Object
Dim types(1) As String
Obj2.Target = c
Obj2.Target = Obj2.GetField("canvas")
args(0) = Obj2.Target
types(0) = "android.graphics.Canvas"
Obj1.RunMethod4("draw", args, types)
Dim Out As OutputStream
Out = File.OpenOutput(File.DirRootExternal, dt & ".png", False)
bmp.WriteToStream(Out, 100, "PNG")
Out.Close
End Sub

خب حالا این کد هارو برای سیو کرد بنویسید

Sub PanelCapture(pnl As Panel, Img2 As ImageView)

Dim Obj1, Obj2 As Reflector
Dim bmp As Bitmap
Dim c As Canvas
Obj1.Target = Obj1.GetActivityBA
Obj1.Target = Obj1.GetField("vg")
bmp.InitializeMutable(pnl.left + pnl.Width, pnl.Top + pnl.Height)   
c.Initialize2(bmp)
Dim args(1) As Object
Dim types(1) As String
Obj2.Target = c
Obj2.Target = Obj2.GetField("canvas")
args(0) = Obj2.Target
types(0) = "android.graphics.Canvas"
Obj1.RunMethod4("draw", args, types)


Dim canvas1 As Canvas
canvas1.Initialize(Img2)
Dim scrt As Rect
scrt.Initialize(pnl.left, pnl.top, pnl.left + pnl.Width, pnl.Top + pnl.Height)
Dim rectPanel1 As Rect
rectPanel1.Initialize(0, 0,Img2.Width, Img2.Height)
canvas1.DrawBitmap(bmp, scrt , rectPanel1)
Img2.Invalidate

End Sub

تمام

♥موفق باشید ♥

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

دوست عزیز کد هارو کپی کن تو پروژت تا بشه سورس

سعی کن یاد بگیری نه صرفا استفاده کنی ازش

موفق باشی*give_rose*

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 1 ماه بعد...
  • 2 ماه بعد...

سلام 

کتابخانه ی خاصی لازمه ؟ 

چون عبارت    PanelCapture   رو قرمز نشون میده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام 

کتابخانه ی خاصی لازمه ؟ 

چون عبارت    PanelCapture   رو قرمز نشون میده

کتابخانه خاصی که فکر نکنم.

باید کتابخانه Reflection  رو تیک بزنید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

فقط نکته ای که هست اینه که فقط کپی پیست نکنیم ، انصافا کد رو درک کنیم. من بشخصه اگه کدی رو متوجه نشم ، محاله تو برنامم بذارمش.چون اون وقت اسمم برنامه نویس نیست ، تایپیسته !!! موفق باشید ./

Sent from my D2302 using Tapatalk

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اگه دوباره بخوایم باتن1 رو فشار بدیم ، یه عکس دیگه می گیره که سایزش کوچیکتره ، و سومین اسکرین شات هم از دومی کوچیکتره و همینطور کوچیک و کوچیکتر میشه 

 

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

 

بازم ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 1 سال بعد...
در در 1394/06/11, 16:22:20، amardia گفته است :

اگه دوباره بخوایم باتن1 رو فشار بدیم ، یه عکس دیگه می گیره که سایزش کوچیکتره ، و سومین اسکرین شات هم از دومی کوچیکتره و همینطور کوچیک و کوچیکتر میشه 

 

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

 

بازم ممنون

درود

کافیه در قسمت sub Button1_Click این خط کد رو 

PanelCapture(Panel1,ImageView1)

بردارید.تمام

ولی بهترین روش استفاده از کتابخانه studentLibrary هستش به شکل زیر

Dim st As StudentLibrary
    	st.getScreenShot(Panel1,File.Combine(File.DirRootExternal&"/behzad", "1.png"))

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...