PDA

View Full Version : تغییر resolution مانیتور در ابتدای برنامه



sh_m
سه شنبه 11 مرداد 1384, 13:10 عصر
سلام دوستان
من می خوام کدی بنویسم که اول برنامه دقت صفحه نمایش رو 600 در 800 کنه .کسی میتونه به من کمک کنه؟
متشکرم

Beyondsoft
سه شنبه 11 مرداد 1384, 20:16 عصر
این کار کاملا اشتباه است!
و اصلا شما حق این کار رو نداری مگن برای یک برنامه Multy media یا یک بازی بخوای

vbapr2005
جمعه 14 مرداد 1384, 01:39 صبح
حالا اگه کسی خواست یه برنامه ی مولتی مدیا یا یه بازی بسازه چی؟

seyedof
جمعه 14 مرداد 1384, 01:57 صبح
سلام
تابع ChangeDisplaySettings
ممنون علی

Peyman_Ranjbar
جمعه 14 مرداد 1384, 05:03 صبح
این کار کاملا اشتباه است!
و اصلا شما حق این کار رو نداری مگن برای یک برنامه Multy media یا یک بازی بخوای

ببخشید کی این حق رو از ما گرفته|؟؟؟

Beyondsoft
جمعه 14 مرداد 1384, 14:16 عصر
راجع به این که این حق را کی از شما گرفته باید بگم که کسی این کار رو نکرده است. به هر حال در هر جا یکسری استاندارد وجود دارد. به هر حال یک سری چارچوب کاری است.
شما می توانید پشت صفحه ی برنامتون رو زرد کنید با فونت سفید !
ولی آیا این مناسبه؟ و آیا این رعایت چارچوب کاری است؟

mehrdotnet
شنبه 15 مرداد 1384, 23:12 عصر
اگه بعدا رزولوشن به حالت اوش برگردونده بشه فکر نمی کنم چیزی هیچ استانداردی رو نقض کنه اما ایده ال ترین روش اینه که شما برنامتون رو طوری بنویسید که خودش رو با رزولوشنی که کاربر انتخاب کرده تطبیق بده و با رزولوشن های مختلف انعطاف پذیر باشه.
اینو میگن User Friendly !!!!

Beyondsoft
یک شنبه 16 مرداد 1384, 01:43 صبح
ابته این درسته که برنامه باید طوری نوشته بشود که انعطاف پذیر باشه ولی این user friendly نیست.
به این می گن سازگاری

SYSMAN
یک شنبه 16 مرداد 1384, 02:33 صبح
اینجا فقط سر به سر هم می زارید که چی بشه یک کمی هم از اون 2 گووله هاتون کار بکشید
آقا اینم کد تغییر وضوح به 800 در 600:

یه کلاس می سازی این کد رو قرار می دی اونجا


Imports System
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Public Class Resolution

<StructLayout(LayoutKind.Sequential)> _
Public Structure DEVMODE1
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _
Public dmDeviceName As String
Public dmSpecVersion As Short
Public dmDriverVersion As Short
Public dmSize As Short
Public dmDriverExtra As Short
Public dmFields As Integer
Public dmOrientation As Short
Public dmPaperSize As Short
Public dmPaperLength As Short
Public dmPaperWidth As Short
Public dmScale As Short
Public dmCopies As Short
Public dmDefaultSource As Short
Public dmPrintQuality As Short
Public dmColor As Short
Public dmDuplex As Short
Public dmYResolution As Short
Public dmTTOption As Short
Public dmCollate As Short
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _
Public dmFormName As String
Public dmLogPixels As Short
Public dmBitsPerPel As Short
Public dmPelsWidth As Integer
Public dmPelsHeight As Integer
Public dmDisplayFlags As Integer
Public dmDisplayFrequency As Integer
Public dmICMMethod As Integer
Public dmICMIntent As Integer
Public dmMediaType As Integer
Public dmDitherType As Integer
Public dmReserved1 As Integer
Public dmReserved2 As Integer
Public dmPanningWidth As Integer
Public dmPanningHeight As Integer
End Structure

Class User_32

<DllImport("user32.dll")> _
Public Shared Function EnumDisplaySettings(ByVal deviceName As String, ByVal modeNum As Integer, ByRef devMode As DEVMODE1) As Integer
End Function

<DllImport("user32.dll")> _
Public Shared Function ChangeDisplaySettings(ByRef devMode As DEVMODE1, ByVal flags As Integer) As Integer
End Function
Public Const ENUM_CURRENT_SETTINGS As Integer = -1
Public Const CDS_UPDATEREGISTRY As Integer = 1
Public Const CDS_TEST As Integer = 2
Public Const DISP_CHANGE_SUCCESSFUL As Integer = 0
Public Const DISP_CHANGE_RESTART As Integer = 1
Public Const DISP_CHANGE_FAILED As Integer = -1
End Class

Class CResolution

Public Sub New(ByVal a As Integer, ByVal b As Integer)
Dim screen As Screen = screen.PrimaryScreen
Dim iWidth As Integer = a
Dim iHeight As Integer = b
Dim dm As DEVMODE1 = New DEVMODE1
dm.dmDeviceName = New String(New Char(32) {})
dm.dmFormName = New String(New Char(32) {})
dm.dmSize = CType(Marshal.SizeOf(dm), Short)
If Not (0 = User_32.EnumDisplaySettings(Nothing, User_32.ENUM_CURRENT_SETTINGS, dm)) Then
dm.dmPelsWidth = iWidth
dm.dmPelsHeight = iHeight
Dim iRet As Integer = User_32.ChangeDisplaySettings(dm, User_32.CDS_TEST)
If iRet = User_32.DISP_CHANGE_FAILED Then
MessageBox.Show("Unable to process your request")
MessageBox.Show("Description: Unable To Process Your Request. Sorry For This Inconvenience.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
iRet = User_32.ChangeDisplaySettings(dm, User_32.CDS_UPDATEREGISTRY)
Select Case iRet
Case User_32.DISP_CHANGE_SUCCESSFUL

Case User_32.DISP_CHANGE_RESTART

MessageBox.Show("Description: You Need To Reboot For The Change To Happen." & Microsoft.VisualBasic.Chr(10) & " If You Feel Any Problem After Rebooting Your Machine" & Microsoft.VisualBasic.Chr(10) & "Then Try To Change Resolution In Safe Mode.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Case Else
MessageBox.Show("Description: Failed To Change The Resolution.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)

End Select
End If
End If
End Sub
End Class
End Class


بعدش کد زیر رو هر جا که می خوای برنامه ات وضوح نمایش رو تغییر بده قرار می دی



Dim ChangeRes As Resolution.CResolution
Dim XRes As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.W idth
Dim YRes As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.H eight

ChangeRes = New Resolution.CResolution(800, 600)


برای اینکه وضوح نمایش رو به حالت اول برگردونی هم می تونی از کد زیر استفاده کنی



'در زمان خروج از برنامه برنامه
ChangeRes = New Resolution.CResolution(XRes, YRes)


توجه به جای ChangeRes = New Resolution.CResolution(800, 600) هر وضوح تصویر استانداردی می تونید قرار بدهید

tayebeh
سه شنبه 02 مرداد 1386, 08:10 صبح
سلام
اگه کاربر در هنگام که برنامه run هست resolution را عوض کند چیکار باید کرد؟آیا راهی هست که جلوی این کار گرفته شود؟

باتشکر

leilav_1984
سه شنبه 02 مرداد 1386, 09:54 صبح
ببخشید کی این حق رو از ما گرفته|؟؟؟

خوب شاید user بخت برگشته یه برنامه در حال اجرای دیگه هم داشته باشه که با Resolutionی که ما میدیم جور نباشه
یا اصلا VGAش اون resolution رو نده

war1351
یک شنبه 02 تیر 1387, 01:44 صبح
استاد عزیز آیا میتونی سورس این کد رو با VB.NET بزاری تو همین تاپیک ممنون میشم

eli_joon
یک شنبه 07 مهر 1387, 08:44 صبح
سلام دوست عزیز .
منم به سورس این کد نیاز دارم .
ممنون