![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Remote Admin - отображение полученных кадров(картинок) [D5, D6, D7, NT4, Win2k, WinXP]
neodiX © (2002-12-17 20:38:00)Всем привет!
Проблема состоит не в том, как принять/отаслать image"и экрана, а как и их отображать... Проблема на примере: первый кадр у меня десктоп, получил, нарисовал - база есть, когда я получаю следующий image, предположим окна, я запоминаю у себя на форме (где нарисован десктоп) координаты, куда будет рисоватся окно, что бы потом когда я получил новый кадр после перерисовки нарисвать вместо бывшего окна пустое место т.е. десктоп, а в новом месте новый кадр. Все получается когда работа идет с одним окном, но как появляется больше 2, то все - облом, что мне все места запоминать? Абсурд! Так вот я мастеров графики спрашиваю: "Может можно как нибудь нарисовать картинку на форме, а потом рисуя на ней(ну как бы над ней) что угодно, что бы она не затиралась ?".
P.S. Есть пример в делфи, "EarthPng" в папке source,там земля и падл заранее описаны, для них и канва и дц созданы, а в моем варианте етих обьектов (земель всяких) в одно время может быть хоть море. Как быть мастера?
P.S. А может я вообще не так это отображение представляю? Ни в ту сторону капаю...? Может у кого есть лучше предложения? Если кто сталкивался с этой проблемой и решил, всегда жду есходников.
Заранее всем спасибо.
AlexT1000 (2002-12-19 19:19:00) [21]а может тебе получат ькаждый раз экран . запаковывать его в архив и пересылать. так легче и накрузка на сеть уменьшиться и тебе легче будет.
или ваще jpg делать и пересылать. максимальное сжатие
neodiX (2002-12-19 17:56:00) [22]Ne u menia vsio cut" luche :). U menia dlia kopirovanija ekrana spec. alogoritm razrabotan v dll"ke. Ja polucaju ne tolko izobrazenie vsego okna (eto u menia pervyi kadr), ja polucaju daze malenkie izmenenija (naprimer kogda ty vodish myshkoi po menu, menu podsvechivaetsia, tak vot ja etu podsvetku t.e. kvadratik s tekstom "File" kopiruju v image i posylaju). Tak polucaetsia nagruzka na set" menshe i voobshe racionalnee. Tak vot teper ponimaesh kakoi u menia bardak posylaetsia :), a mne ego nado korrektno otobrazit. Konecno, esli ves" ekran posylat", to net problem, no menia takoi rasklad nikak ne ustraivaet, mne nuzna skorost".
AlexT1000 (2002-12-19 17:13:00) [23]посмотрел я RDAdmin.
теперь вопрос. ты говоришь , что ты получаешь можешь изображения окон . а каких окон?
допустим можешь ли ты получить просто изображение всего экрана на удаленной машине ?
т.е
b := Tbitmap.Create;
b.Width := Screen.Width;
b.Height := Screen.Height;
dc := GETDC(0);
bitblt(b.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,
DC, 0, 0, SRCCOPY);
B.SaveToFile("screen.bmp");
ReleaseDC(0,DC);
B.Free;
neodiX (2002-12-19 14:24:00) [24]Esli ty v lokalke ili est" dva kompa, vozmi v inete xotia by RAdmin (ocen bystro naidiosh cerez google), u sebia zainstal" klienta, a na drugom kompe - server, i posmotry co za vesch. (kogda poprobuesh, ty ego (radmin) ne zahocesh uninstalit" :)).
P.S. esli net vozmonosti poprobyvat" :(, togda kogda budet vozmonost" objasniu problemu na russkom jazyke.
AlexT1000 (2002-12-19 12:46:00) [25]RAdmin ili VNC не могу . потому как не знаю, что это ваще за птицы
neodiX (2002-12-19 12:40:00) [26]Seicas ne mogu na russkom :( (poze napishu).
No ty i sam mozesh predstavit zadacu, prosto zadai vopros kak naprimer RAdmin ili VNC korrekto otobrazaet polucennye kadry s udolionnogo kompa u sebia na forme.
AlexT1000 (2002-12-19 12:17:00) [27]вообщем ты как-нить на русском напиши в чем суть задачи. чем могу помогу.
не зная идею задачи трудн очто-то конкретно советовать
neodiX (2002-12-19 09:43:00) [28]Vrode cto to pohoze (seicas net vozmonosti proverit"), no chut" ne to. Tut u tebia vnacale zapolniaetsia list, a potom iz nego vsio beriotsia ir risuetsia, u menia ze, prihodit po odnomu kadru(t.e. list ne nuzen, nu s etim razberiomsia) i ego(kadr) srazu nado risovat". Mozet u tebia to cto nado, no ja dumaju cto posle
> // и на форму
> bitblt(Canvas.Hanble,0,0,ClientWidth,ClientHeight,MyCanvas.Handle,0,0,SRCCOPY);
forma budet zarisovana i ftoroi kadr budet uze risovatsia na "isporcenoi forme". Xorosho by bylo kadry risovat" na odnoi kanve(ne vse srazu, a po odnomu, vrode u tebia tak i sdelano), a potom etu canvu risovat" na forme, ejo ne zarisovyvaja.
AlexT1000 (2002-12-18 19:05:00) [29]т.е тебе нужно отображать какбы послойное изображение ?!
если так . то для этого тебе прийдется хранить все твои битмапы и каждый раз перерисовывать их все заново.
т.е. имеем
TLayer = record
X,Y : integer;
Bitmap : Tbitmap;
end;
Bitmap делать pf24bit
Bitmap.PixelFormat := pf24bit;
List : TList ;
List.Add(Layer1);
List.Add(Layer2); ...... где ты хранишь все битмапы которые нужно отрисовать и их координаты.
создаешь канву в начале проги
MyCanvas := TCanvas.Create;
теперь отрисовка
Canvas.FillRect(rect(0,0,ClientWidth,ClientHeight));
for i:=0 to Lis.Count -1 do with TLayerList[i]) do begin
bitblt (MyCanvas.Handle,X,Y,Bitmap.Width,Bitmap.Height,0,0,
Bitmap.Canvas.Handle,
SRCCOPY);
end;
// и на форму
bitblt(Canvas.Hanble,0,0,ClientWidth,ClientHeight,MyCanvas.Handle,0,0,SRCCOPY);
код отрисовки должен быть на OnPaint формы
разрушить List, а перед этим все битмапы и
MyCanvas.Free в конце проги
я правильно тебя понял?
neodiX (2002-12-18 18:15:00) [30]Sorry for latin.
Nu poprobuju...
Predstav"... u tebia na forme narisovan desktop, a ty polucaesh pervyi kadr(image), potom vtoroj, tretii i t.d.. Ih vse nado otobrazat" na etom desktope kak okna(windowskie), esli srazu risovat, to kak potom vostonovit izobrazenie desctop"a, ono zarisuetsia etimi oknami... Nado risovat" ne zatiraja desktop. Vrode kak to nado ispolzovat SelectObject, createcompatibleDc i t.d. no ja neznaju kak :( vot i spashivaju.
P.S. esli vsio eshio ne poniatno skazi, u menia seicas vremia netu (ja ne doma), togda objasniu podrobnee i na russkom.
AlexT1000 (2002-12-18 17:54:00) [31]а можно еще разок и внятно написат ьчто тебе нужно.
а то какой-то непонятный набор слов идет
neodiX (2002-12-18 14:28:00) [32]I can"t believe it!
Neuzeli nikto ne stalkivalsia s pohozei problemoi?