Avatar billede area404 Nybegynder
21. september 2005 - 13:22 Der er 8 kommentarer

Sammenligne data

Hej Eksperter

Hvordan kan jeg efter at have udskrevet en masse værdier fra 2 billeder sammenligne disse for så bagefter at finde forskellen på dem??

Værdien for begge steder er en X og Y værdi med nogle tal bafefter.. hvis X og Y værdien på begge billeder ikke har samme tal efter sig skal jeg gerne have at vide hvilke X og Y punkter det drejer sig om.

Et eksempel på en udskreven værdi kunne være x:1y:2 - 245633221

Jeg har tænkt på en access database, men jeg tror ikke den arbejder hurtigt nok, ellers kunne man jo indlæse hver x o y i hver sit felt i en tabel og derudfra sige at hvis ID'en ikke stemmer overens så udskriv det pågældende ID.

Håber i forstår hvad jeg mener :-)
/Ron
Avatar billede mazzoo Nybegynder
21. september 2005 - 13:58 #1
Du løber begge billede igennem, og ved vær værdi gemmer du forskellen på billederne i Hashtabel med x+y som key.

På den måde kan du skabe det 3. Billede ud fra den hashtabellens værdier.

-maZZoo
Avatar billede fizz Nybegynder
21. september 2005 - 22:36 #2
ja... nemmere kan det ikke siges
Avatar billede fizz Nybegynder
21. september 2005 - 22:45 #3
loop med:

picture3.pset(x,y) = picture1.point(x,y) - picture2.point(x,y)
Avatar billede fizz Nybegynder
21. september 2005 - 22:54 #4
For y = 0 To Picture1.ScaleHeight
        For x = 0 To Picture1.ScaleWidth
            Picture3.PSet (x, y), Picture1.Point(x, y) - Picture2.Point(x, y)
        Next x
        DoEvents
    Next y
Avatar billede area404 Nybegynder
22. september 2005 - 11:21 #5
Det fungerer jo fint! Men kører ret så langsomt, nogen idéer til hvordan det kan komme til at køre hurtigere?
mazzoo smider du et svar, så kan i dele points.
Avatar billede fizz Nybegynder
22. september 2005 - 22:21 #6
nej nej... jeg vil ha flest point:

put dette i din form:

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

Private Sub Command2_Click()
    Picture3.Picture = Picture1.Picture
    DoEvents
    BitBlt Picture3.hDC, 0, 0, Picture3.ScaleWidth, Picture3.ScaleHeight, Picture2.hDC, 0, 0, &H660046
    Picture3.Refresh
End Sub

den klarer det på under et sekund
Avatar billede area404 Nybegynder
23. september 2005 - 09:46 #7
Ok, det er meget godt, hvis man lige fjerner Picture3.Refresh får jeg så den del af billede 2 der ikke findes på billede 1´.. min gamle kode har jeg lavet sådan at man kan finde hvor mange procent der har ændret sig via en simpel if sætning. Men er det også muligt med det stykke kode du har postet til sidst fizz? jeg kender ikke rigtig til BitBlt og hdc. Men sådan som jeg forstår det så kører den fra punkt 0,0 til højde*længde af billedet
Avatar billede fizz Nybegynder
26. september 2005 - 09:47 #8
hmm man kan ikke tælle procent mens den ´tegner´ det er man nødt til at gøre bagefter med et lille loop
For y = 0 To Picture1.ScaleHeight
  For x = 0 To Picture1.ScaleWidth
    if Picture3.Point(x, y) <> 0 then diff=diff+1
  Next x
  DoEvents
Next y

husk at sætte alle picturebox´ne til autoredraw=true så virker Picture3.Refresh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester