-
Есть простенькая задача. Из удаленной машины в терминальной сессии, регулярно плеваться по UDP пакетом длиной около 1Кб. Пакет подготавливается попиксельным чтением картинки с битмапа 64х64. Т.е. по сути на удаленной машине изредка рисуется картика на битмапе. Потом попиксельно считывается, заполняется пакет и отплавяется по UDP на определенный IP и порт.
Идея была в том, что бы запустив прогу и отключившись от удаленки, не закрывая терминальную сессию оставить ее работать. И регулярно посылать пакеты по UDP.
Работает, посылает. Но считывает с битмапа какую-то хрень. Как только подлючають к удаленному компу - считывает правильно, отклчаюсь - хрень. Думаль что из-за того что счтиываю и Image который на форме лежит. Переделал, создаю TBitMap рисую на нем, и считываю - те же грабли.
Куда копать, помогайте...
-
> создаю TBitMap рисую на нем
что рисуешь и как?
-
Рисую так:
Screen1.Canvas.Font.Name := 'Tahoma'; Screen1.Canvas.Font.Size :=7; Screen1.Canvas.Font.Color := clBlack; Screen1.Canvas.TextOut(0,0,'Винни Пух'); Screen1.Canvas.TextOut(0,10,'Пятачек'); Screen1.Canvas.TextOut(0,20,'Сова'); Screen1.Canvas.TextOut(0,30,'Кролик'); Screen1.Canvas.TextOut(0,40,'Кристофер'); Screen1.Canvas.TextOut(0,50,'Осел');
Считываю так:
for i := 0 to 63 do begin for j := 0 to 7 do begin S := 0; for k := 0 to 7 do if Form20.Image2.Canvas.Pixels[j*8+k,i] = clBlack then S := S or ($01 shl k); TxD[i*8+j] := S; - тут на самом деле не так end; end;
Отправляю так:
IdUDPServer1.SendBuffer(IP, port, TxD[0], 512);
-
> Рисую так: > > Screen1
не понял... рисуешь на Screen1, а считываешь из Form20.Image2.Canvas?
в любом случае, при завершении терминальной сессии все канвасы будут недействительными. нужно оперировать битмапом в памяти, без всяких TImage
-
Извиняюсь - скопировал не оттуда.
Считываю конечно же из Screen1.Canvas
Собсвенно его же и создаю при создании формы:
Screen1 := TBitmap.Create; Screen1.Width := 64; Screen1.Height := 64;
Может туплю? Как на битмапе рисовать без канвы?
-
имхо при отключении от сессии контекст рабочего стола не валиден...
-
Мой Screen1-то динамически создается. В памяти сидит. С него считывается даже что-то. Только мусор какой-то.. Я на него даже часы с секундами выводил и каждую секунду обновлял - в поле секунд мусор каждую секунду меняется...
-
здесь нужно что-то рисующее прямо в памяти без канвасов, потому как даже bitmap.canvas создает совместимый контекст в памяти, но без десктопной сессии он будет невалиден
|