Hoi allemaal,
Bedankt voor het lezen van mijn vraag! Ik heb het forum doorzocht maar kon niet iets vinden dat hierop lijkt dus hopelijk kunnen jullie me helpen!
Ik heb een programma geschreven dat mijn desktop shortcuts moet gaan vervangen want ik heb er veel en veel en veel te veel. Omdat ik het leuk vind om ook een mooi plaatje op de achtergrond te hebben, gebruik ik de volgende code om dit te realizeren:
Het probleem is (vind ik) dat als je maar een klein beetje scrollt dat je plaatje er als in het volgende screenshot eruit komt te zien:Code:... private myBackground: TBitmap; ... function GetDesktopBG: string; var R: TRegistry; begin R := TRegistry.Create; R.RootKey := HKEY_CURRENT_USER; R.OpenKey('\Control Panel\Desktop',False); Result := R.ReadString('WallPaper'); R.Free; end; procedure TForm1.FormCreate(Sender:TObject); begin myBackground := TBitmap.Create; myBackground.LoadFromFile(GetDesktopBG); end; procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Draw(0, 0, myBackground); end; procedure TForm1.FormDestroy(Sender: TObject); begin myBackground.Free; end;
http://i42.tinypic.com/2h3a3i0.jpg
terwijl er het zoals in dit plaatje uit zou moeten zien:
http://i39.tinypic.com/29cmfrp.jpg
En dat heeft dit tot gevolg:
http://i44.tinypic.com/2yzbdsk.jpg
Ok, dat laatste plaatje is gewoon voor de lol, maar als nog, het blijft lelijk als het er zo uit komt te zien en ik heb geen idee hoe dit nu voorkomen kan worden. Kunnen jullie misschien een oplossing bieden?
EDIT: PS: De echte code is een stuk uitgebreider, vanwege meerdere image formats ondersteuning en resizen naar de afmeting van het form, maar die functies leveren geen problemen op. Ik denk dat het puur ligt aan het het canvas.draw stukje code.
Bookmarks