A InfoWiki wikiből
(Változatok közti eltérés)
WikiSysop (vita | szerkesztései)
(Új oldal, tartalma: „<page>Wallpaper beállítása dual monitoron</page> <path p1="Kezdolap|Kezdőlap" w3="cs/Blog|Programok C# nyelven" xx="-" p2="EBooks|Jegyzetek" p3="Mp1/Nyitolap|C# I. ea...”)
Újabb szerkesztés →
Aktuális változat
Wallpaper beállítása dual monitoron
Amennyiben pl. van egy normál monitorunk 1600x1200, és egy wide monitorunk 1680x1050 felbontással, akkor készíthetünk egy 3280x1200-as méretű képet. Ez a kép pontosan a két monitor szélességének (1600+1680) összege szélességű, magassága a két magasság közül a nagyobb érték. Egy ekkora méretű képet amennyiben beállítunk háttérkép (wallpaper)-nek a Windows-ban, úgy ezen kép bal része fog a bal oldali normál, jobb része fog a jobb oldali wide monitorunkon megjelenni. E módon tudunk különböző háttérképet állítani be a bal és jobb monitorunkon.
Feltételezzük, hogy vannak pontosan 1600x1200-as képeink valamely c:\kepek\normal alkönyvtárban, hasonlóan vannak pontosan 1680x1050 méretű képeink a c:\kepek\wide alkönyvtárban.
- első lépésben választunk egy-egy képet a fenti alkönyvtárakból (leftName, rightName).
- aztán elkészítünk egy megfelelő méretű képet (theImage)
- ráhelyezzük a 0,0 koordinátákra a bal oldali képet
- ráhelyezzük az 1680,0 koordinátákra a jobb oldali képet
- elmentjük a kapott eredményt c:\kepek\choosen_as_actual.bmp néven BMP formátumban
- és szólunk a windows-nak, hogy állítsa be ezt háttérképnek
class Program { static Random rnd = new Random(); public const int SPI_SETDESKWALLPAPER = 20; [DllImport("User32.dll", CharSet = CharSet.Auto)] private static extern int SystemParametersInfo( int uiAction, int uiParam, string pvParam, int fWinIni ); //.................................................................... static void Main(string[] args) { string leftName = pickupOne(@"c:\kepek\normal", "*.jpg"); string rightName = pickupOne(@"c:\kepek\wide", "*.jpg"); Bitmap theImage = new Bitmap(3280,1200); Image left = Bitmap.FromFile(leftName); Image right = Bitmap.FromFile(rightName); Graphics g = Graphics.FromImage(theImage); g.DrawImage(left, 0.0f, 0.0f); g.DrawImage(right, 1600.0f, 0.0f); g.Dispose(); theImage.Save(@"c:\kepek\choosen_as_actual.bmp", System.Drawing.Imaging.ImageFormat.Bmp); SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, @"c:\kepek\choosen_as_actual.bmp", 0x01|0x02); } //.................................................................... static string pickupOne(string dirName, string filter) { string[] files = System.IO.Directory.GetFiles(dirName, filter); int i = rnd.Next(0, files.Length); return files[i]; } //.................................................................... }
Hernyák Zoltán